← APIs / Laevitas
Verified

Laevitas

Laevitasby Laevitas · Crypto Derivatives, Market Data, Analytics, x402

Professional crypto derivatives and market data from Laevitas, including options, perpetuals, futures, spot, volatility surfaces, predictions and Hyperliquid analytics.

financefederated
Price per request
$0.10
About

Access institutional-grade crypto market intelligence through x402 without creating an account or managing an API key. Apiosk indexes the live Laevitas catalog for discovery; requests and USDC payments are sent directly to Laevitas.

Hosted by the provider

Apiosk lists this API but does not proxy it. Call the provider's URL directly and pay them over x402 — Apiosk never sits between you and the response.

Open provider →

ResourceDescription
https://apiv2.laevitas.ch/api/v1/options/catalog Options data — pay per request Open
https://apiv2.laevitas.ch/api/v1/options/metadata?exchange=deribit&instrument_name=BTC-24JUL26-68000-C Options data — pay per request Open
https://apiv2.laevitas.ch/api/v1/options/ohlcvt Options data — pay per request Open
https://apiv2.laevitas.ch/api/v1/options/volume Options data — pay per request Open
https://apiv2.laevitas.ch/api/v1/options/trades/summary?exchange=deribit&currency=BTC&group_by=exchange Options data — pay per request Open
https://apiv2.laevitas.ch/api/v1/options/trades Options data — pay per request Open
https://apiv2.laevitas.ch/api/v1/options/flow?exchange=deribit&currency=BTC Options data — pay per request Open
https://apiv2.laevitas.ch/api/v1/options/open-interest Options data — pay per request Open
https://apiv2.laevitas.ch/api/v1/options/level1 Options data — pay per request Open
https://apiv2.laevitas.ch/api/v1/options/volatility Options data — pay per request Open
https://apiv2.laevitas.ch/api/v1/options/ticker-history Options data — pay per request Open
https://apiv2.laevitas.ch/api/v1/options/reference-price Options data — pay per request Open
https://apiv2.laevitas.ch/api/v1/options/snapshot?exchange=deribit&currency=BTC Options data — pay per request Open
https://apiv2.laevitas.ch/api/v1/options/gex/catalog Options data — pay per request Open
https://apiv2.laevitas.ch/api/v1/options/gex/latest Options data — pay per request Open
https://apiv2.laevitas.ch/api/v1/options/gex/history Options data — pay per request Open
https://apiv2.laevitas.ch/api/v1/options/gex/regime-changes Options data — pay per request Open
https://apiv2.laevitas.ch/api/v1/options/gex/strikes Options data — pay per request Open
https://apiv2.laevitas.ch/api/v1/options/gex/term-structure Options data — pay per request Open
https://apiv2.laevitas.ch/api/v1/options/gex/profile Options data — pay per request Open
https://apiv2.laevitas.ch/api/v1/perpetuals/catalog Perpetual swaps data — pay per request Open
https://apiv2.laevitas.ch/api/v1/perpetuals/metadata?exchange=deribit&instrument_name=BTC-PERPETUAL Perpetual swaps data — pay per request Open
https://apiv2.laevitas.ch/api/v1/perpetuals/ohlcvt Perpetual swaps data — pay per request Open
https://apiv2.laevitas.ch/api/v1/perpetuals/level1 Perpetual swaps data — pay per request Open
https://apiv2.laevitas.ch/api/v1/perpetuals/orderbook Perpetual swaps data — pay per request Open

Showing 25 of 98 resources — the full set is in /.well-known/x402.

Technical Specs
Auth MethodNone (x402 payment proof only)
Response FormatJSON
Endpoints98
Endpoints
MethodPathDescriptionCost
GET /api/v1/analytics/realized-volatility Cross-asset analytics (realized volatility and other derived metrics) — pay per request
$0.10 default
View details
GET /api/v1/futures/carry Dated futures data — pay per request
$0.10 default
View details
GET /api/v1/futures/catalog Dated futures data — pay per request
$0.10 default
View details
GET /api/v1/futures/flow Dated futures data — pay per request
$0.10 default
View details
GET /api/v1/futures/level1 Dated futures data — pay per request
$0.10 default
View details
GET /api/v1/futures/liquidations Dated futures data — pay per request
$0.10 default
View details
GET /api/v1/futures/metadata Dated futures data — pay per request
$0.10 default
View details
GET /api/v1/futures/ohlcvt Dated futures data — pay per request
$0.10 default
View details
GET /api/v1/futures/open-interest Dated futures data — pay per request
$0.10 default
View details
GET /api/v1/futures/orderbook Dated futures data — pay per request
$0.10 default
View details
GET /api/v1/futures/orderbook-raw Dated futures data — pay per request
$0.10 default
View details
GET /api/v1/futures/reference-price Dated futures data — pay per request
$0.10 default
View details
GET /api/v1/futures/snapshot Dated futures data — pay per request
$0.10 default
View details
GET /api/v1/futures/ticker-history Dated futures data — pay per request
$0.10 default
View details
GET /api/v1/futures/trades Dated futures data — pay per request
$0.10 default
View details
GET /api/v1/futures/trades/summary Dated futures data — pay per request
$0.10 default
View details
GET /api/v1/futures/volume Dated futures data — pay per request
$0.10 default
View details
GET /api/v1/hyperliquid/node/fills Hyperliquid - HyperCore data. Pay per request
$0.10 default
View details
GET /api/v1/hyperliquid/node/funding-payments Hyperliquid - HyperCore data. Pay per request
$0.10 default
View details
GET /api/v1/hyperliquid/node/instruments Hyperliquid - HyperCore data. Pay per request
$0.10 default
View details
GET /api/v1/hyperliquid/node/l2-orderbook Hyperliquid - HyperCore data. Pay per request
$0.10 default
View details
GET /api/v1/hyperliquid/node/liquidations Hyperliquid - HyperCore data. Pay per request
$0.10 default
View details
GET /api/v1/hyperliquid/node/prediction-fills Hyperliquid - HyperCore data. Pay per request
$0.10 default
View details
GET /api/v1/hyperliquid/node/resting-orders Hyperliquid - HyperCore data. Pay per request
$0.10 default
View details
GET /api/v1/hyperliquid/node/twap-events Hyperliquid - HyperCore data. Pay per request
$0.10 default
View details
GET /api/v1/hyperliquid/node/wallet-flow Hyperliquid - HyperCore data. Pay per request
$0.10 default
View details
GET /api/v1/hyperliquid/node/wallet-positions Hyperliquid - HyperCore data. Pay per request
$0.10 default
View details
GET /api/v1/instruments Cross-market contract reference data — list endpoint. Pay per request.
$0.10 default
View details
GET /api/v1/instruments/detail Cross-market contract reference data (tick size, lot size, leverage, expiry, …) — pay per request
$0.10 default
View details
GET /api/v1/macro/asset-classes Discovery for non-crypto perpetuals — equity (NVDA, TSLA, MSTR, …), commodity (GOLD, OIL, SILVER, …), forex (EURUSD, GBPUSD, …), and index. Pay per request
$0.10 default
View details
GET /api/v1/macro/catalog Discovery for non-crypto perpetuals — equity (NVDA, TSLA, MSTR, …), commodity (GOLD, OIL, SILVER, …), forex (EURUSD, GBPUSD, …), and index. Pay per request
$0.10 default
View details
GET /api/v1/macro/summary Discovery for non-crypto perpetuals — equity (NVDA, TSLA, MSTR, …), commodity (GOLD, OIL, SILVER, …), forex (EURUSD, GBPUSD, …), and index. Pay per request
$0.10 default
View details
GET /api/v1/macro/venues Discovery for non-crypto perpetuals — equity (NVDA, TSLA, MSTR, …), commodity (GOLD, OIL, SILVER, …), forex (EURUSD, GBPUSD, …), and index. Pay per request
$0.10 default
View details
GET /api/v1/options/catalog Options data — pay per request
$0.10 default
View details
GET /api/v1/options/flow Options data — pay per request
$0.10 default
View details
GET /api/v1/options/gex/catalog Options data — pay per request
$0.10 default
View details
GET /api/v1/options/gex/history Options data — pay per request
$0.10 default
View details
GET /api/v1/options/gex/latest Options data — pay per request
$0.10 default
View details
GET /api/v1/options/gex/profile Options data — pay per request
$0.10 default
View details
GET /api/v1/options/gex/regime-changes Options data — pay per request
$0.10 default
View details
GET /api/v1/options/gex/strikes Options data — pay per request
$0.10 default
View details
GET /api/v1/options/gex/term-structure Options data — pay per request
$0.10 default
View details
GET /api/v1/options/level1 Options data — pay per request
$0.10 default
View details
GET /api/v1/options/metadata Options data — pay per request
$0.10 default
View details
GET /api/v1/options/ohlcvt Options data — pay per request
$0.10 default
View details
GET /api/v1/options/open-interest Options data — pay per request
$0.10 default
View details
GET /api/v1/options/reference-price Options data — pay per request
$0.10 default
View details
GET /api/v1/options/snapshot Options data — pay per request
$0.10 default
View details
GET /api/v1/options/ticker-history Options data — pay per request
$0.10 default
View details
GET /api/v1/options/trades Options data — pay per request
$0.10 default
View details
GET /api/v1/options/trades/summary Options data — pay per request
$0.10 default
View details
GET /api/v1/options/vol-surface/by-expiry Options data — pay per request
$0.10 default
View details
GET /api/v1/options/vol-surface/by-tenor Options data — pay per request
$0.10 default
View details
GET /api/v1/options/vol-surface/by-time Options data — pay per request
$0.10 default
View details
GET /api/v1/options/volatility Options data — pay per request
$0.10 default
View details
GET /api/v1/options/volume Options data — pay per request
$0.10 default
View details
GET /api/v1/perpetuals/carry Perpetual swaps data — pay per request
$0.10 default
View details
GET /api/v1/perpetuals/catalog Perpetual swaps data — pay per request
$0.10 default
View details
GET /api/v1/perpetuals/flow Perpetual swaps data — pay per request
$0.10 default
View details
GET /api/v1/perpetuals/level1 Perpetual swaps data — pay per request
$0.10 default
View details
GET /api/v1/perpetuals/liquidations Perpetual swaps data — pay per request
$0.10 default
View details
GET /api/v1/perpetuals/metadata Perpetual swaps data — pay per request
$0.10 default
View details
GET /api/v1/perpetuals/ohlcvt Perpetual swaps data — pay per request
$0.10 default
View details
GET /api/v1/perpetuals/open-interest Perpetual swaps data — pay per request
$0.10 default
View details
GET /api/v1/perpetuals/orderbook Perpetual swaps data — pay per request
$0.10 default
View details
GET /api/v1/perpetuals/orderbook-raw Perpetual swaps data — pay per request
$0.10 default
View details
GET /api/v1/perpetuals/reference-price Perpetual swaps data — pay per request
$0.10 default
View details
GET /api/v1/perpetuals/snapshot Perpetual swaps data — pay per request
$0.10 default
View details
GET /api/v1/perpetuals/ticker-history Perpetual swaps data — pay per request
$0.10 default
View details
GET /api/v1/perpetuals/trades Perpetual swaps data — pay per request
$0.10 default
View details
GET /api/v1/perpetuals/trades/summary Perpetual swaps data — pay per request
$0.10 default
View details
GET /api/v1/perpetuals/volume Perpetual swaps data — pay per request
$0.10 default
View details
GET /api/v1/predictions/catalog Prediction markets data — pay per request
$0.10 default
View details
GET /api/v1/predictions/categories Prediction markets data — pay per request
$0.10 default
View details
GET /api/v1/predictions/metadata Prediction markets data — pay per request
$0.10 default
View details
GET /api/v1/predictions/ohlcvt Prediction markets data — pay per request
$0.10 default
View details
GET /api/v1/predictions/orderbook-raw Prediction markets data — pay per request
$0.10 default
View details
GET /api/v1/predictions/snapshot Prediction markets data — pay per request
$0.10 default
View details
GET /api/v1/predictions/ticker-history Prediction markets data — pay per request
$0.10 default
View details
GET /api/v1/predictions/trades Prediction markets data — pay per request
$0.10 default
View details
GET /api/v1/spot/catalog Spot market data — pay per request
$0.10 default
View details
GET /api/v1/spot/l2-orderbook Spot market data — pay per request
$0.10 default
View details
GET /api/v1/spot/l2-orderbook-raw Spot market data — pay per request
$0.10 default
View details
GET /api/v1/spot/level1 Spot market data — pay per request
$0.10 default
View details
GET /api/v1/spot/metadata Spot market data — pay per request
$0.10 default
View details
GET /api/v1/spot/ohlcvt Spot market data — pay per request
$0.10 default
View details
GET /api/v1/spot/snapshot Spot market data — pay per request
$0.10 default
View details
GET /api/v1/spot/ticker Spot market data — pay per request
$0.10 default
View details
GET /api/v1/spot/trades Spot market data — pay per request
$0.10 default
View details
GET /api/v1/spot/volume Spot market data — pay per request
$0.10 default
View details
GET /api/v1/vol-surface/catalog Proprietary volatility surface data - snapshots, slices, term structure, and strike diagnostics. Pay per request
$0.10 default
View details
POST /api/v1/vol-surface/risk/decompose Live portfolio risk, scenario, and ladder requests backed by the proprietary vol-surface engine. Pay per request
$0.10 default
View details
POST /api/v1/vol-surface/risk/ladder Live portfolio risk, scenario, and ladder requests backed by the proprietary vol-surface engine. Pay per request
$0.10 default
View details
POST /api/v1/vol-surface/risk/scenario Live portfolio risk, scenario, and ladder requests backed by the proprietary vol-surface engine. Pay per request
$0.10 default
View details
GET /api/v1/vol-surface/slices Proprietary volatility surface data - snapshots, slices, term structure, and strike diagnostics. Pay per request
$0.10 default
View details
GET /api/v1/vol-surface/snapshots Proprietary volatility surface data - snapshots, slices, term structure, and strike diagnostics. Pay per request
$0.10 default
View details
GET /api/v1/vol-surface/strikes Proprietary volatility surface data - snapshots, slices, term structure, and strike diagnostics. Pay per request
$0.10 default
View details
GET /api/v1/vol-surface/term-structure Proprietary volatility surface data - snapshots, slices, term structure, and strike diagnostics. Pay per request
$0.10 default
View details
Endpoint documentation
GET/api/v1/analytics/realized-volatility
$0.10 default
Description

Cross-asset analytics (realized volatility and other derived metrics) — pay per request

Documentation

Realized Volatility

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.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "currency": {
      "description": "Base currency filter. Case-insensitive.",
      "example": "BTC",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next historical page. Use meta.next_cursor from the previous response.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "date": {
      "description": "Snapshot point-in-time in ISO 8601 format (UTC). If omitted in snapshot mode, returns latest rows.",
      "example": "2026-04-27T12:35:30Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC). Providing start or end enables historical mode.",
      "example": "2026-04-28T00:00:00Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "estimator": {
      "description": "Realised volatility estimator filter.",
      "enum": [
        "close_to_close",
        "parkinson",
        "garman_klass"
      ],
      "example": "close_to_close",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "description": "Exchange name. Required. Case-insensitive. Example data includes Deribit, Binance, and Hyperliquid instruments.",
      "example": "deribit",
      "required": true,
      "type": "string",
      "x-parameter-location": "query"
    },
    "frequency": {
      "description": "Sampling frequency used to compute realised volatility.",
      "enum": [
        "daily",
        "hourly"
      ],
      "example": "daily",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name": {
      "description": "Full instrument identifier. Required. Case-insensitive.",
      "example": "BTC-PERPETUAL",
      "required": true,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of historical records to return (1-1000). Ignored in snapshot mode.",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Providing start or end enables historical mode.",
      "example": "2026-04-27T00:00:00Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "window_days": {
      "description": "Realised volatility lookback window in days.",
      "enum": [
        7,
        30,
        60,
        90,
        180,
        365
      ],
      "example": 30,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    }
  },
  "required": [
    "exchange",
    "instrument_name"
  ],
  "type": "object"
}
Request schema
{
  "properties": {
    "currency": {
      "description": "Base currency filter. Case-insensitive.",
      "example": "BTC",
      "type": "string"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next historical page. Use meta.next_cursor from the previous response.",
      "type": "string"
    },
    "date": {
      "description": "Snapshot point-in-time in ISO 8601 format (UTC). If omitted in snapshot mode, returns latest rows.",
      "example": "2026-04-27T12:35:30Z",
      "format": "date-time",
      "type": "string"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC). Providing start or end enables historical mode.",
      "example": "2026-04-28T00:00:00Z",
      "format": "date-time",
      "type": "string"
    },
    "estimator": {
      "description": "Realised volatility estimator filter.",
      "enum": [
        "close_to_close",
        "parkinson",
        "garman_klass"
      ],
      "example": "close_to_close",
      "type": "string"
    },
    "exchange": {
      "description": "Exchange name. Required. Case-insensitive. Example data includes Deribit, Binance, and Hyperliquid instruments.",
      "example": "deribit",
      "type": "string"
    },
    "frequency": {
      "description": "Sampling frequency used to compute realised volatility.",
      "enum": [
        "daily",
        "hourly"
      ],
      "example": "daily",
      "type": "string"
    },
    "instrument_name": {
      "description": "Full instrument identifier. Required. Case-insensitive.",
      "example": "BTC-PERPETUAL",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of historical records to return (1-1000). Ignored in snapshot mode.",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Providing start or end enables historical mode.",
      "example": "2026-04-27T00:00:00Z",
      "format": "date-time",
      "type": "string"
    },
    "window_days": {
      "description": "Realised volatility lookback window in days.",
      "enum": [
        7,
        30,
        60,
        90,
        180,
        365
      ],
      "example": 30,
      "minimum": 1,
      "type": "number"
    }
  },
  "required": [
    "exchange",
    "instrument_name"
  ],
  "type": "object"
}
Response schema
{
  "allOf": [
    {
      "properties": {
        "data": {
          "items": {
            "type": "array"
          },
          "type": "array"
        },
        "meta": {
          "properties": {
            "next_cursor": {
              "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,
              "type": "string"
            }
          },
          "required": [
            "next_cursor"
          ],
          "type": "object",
          "x-openapi-ref": "#/components/schemas/PaginationMetaEntity"
        }
      },
      "required": [
        "data",
        "meta"
      ],
      "type": "object",
      "x-openapi-ref": "#/components/schemas/PaginatedResponse"
    },
    {
      "properties": {
        "data": {
          "items": {
            "properties": {
              "currency": {
                "description": "Base currency",
                "example": "BTC",
                "type": "string"
              },
              "date": {
                "description": "Date in ISO 8601 format (UTC)",
                "example": "2024-12-10T00:00:00.000Z",
                "format": "date-time",
                "type": "string"
              },
              "estimator": {
                "description": "Realised volatility estimator",
                "example": "close_to_close",
                "type": "string"
              },
              "exchange": {
                "description": "Exchange name",
                "example": "deribit",
                "type": "string"
              },
              "frequency": {
                "description": "Sampling frequency used to compute realised volatility",
                "example": "daily",
                "type": "string"
              },
              "instrument_name": {
                "description": "Full instrument identifier",
                "example": "BTC-PERPETUAL",
                "type": "string"
              },
              "rv_annualized": {
                "description": "Annualized realised volatility, expressed as a percentage (e.g. 38.76 = 38.76% annualised vol).",
                "example": 38.76,
                "type": "number"
              },
              "sample_count": {
                "description": "Number of samples used to compute the metric",
                "example": 30,
                "type": "number"
              },
              "window_days": {
                "description": "Realised volatility lookback window in days",
                "example": 30,
                "type": "number"
              }
            },
            "required": [
              "date",
              "exchange",
              "currency",
              "instrument_name",
              "frequency",
              "window_days",
              "estimator",
              "rv_annualized",
              "sample_count"
            ],
            "type": "object",
            "x-openapi-ref": "#/components/schemas/RealizedVolatilityEntity"
          },
          "type": "array"
        }
      }
    }
  ]
}
Example request
{
  "currency": "BTC",
  "cursor": "test",
  "date": "2026-04-27T12:35:30Z",
  "end": "2026-04-28T00:00:00Z",
  "estimator": "close_to_close",
  "exchange": "deribit",
  "frequency": "daily",
  "instrument_name": "BTC-PERPETUAL",
  "limit": 100,
  "sort_dir": "ASC",
  "start": "2026-04-27T00:00:00Z",
  "window_days": 30
}
Example response
{
  "data": [
    {
      "currency": "BTC",
      "date": "2026-04-27T12:35:30.000Z",
      "estimator": "close_to_close",
      "exchange": "deribit",
      "frequency": "daily",
      "instrument_name": "BTC-PERPETUAL",
      "rv_annualized": 35.73,
      "sample_count": 30,
      "window_days": 30
    },
    {
      "currency": "BTC",
      "date": "2026-04-27T12:35:30.000Z",
      "estimator": "parkinson",
      "exchange": "deribit",
      "frequency": "daily",
      "instrument_name": "BTC-PERPETUAL",
      "rv_annualized": 39.11,
      "sample_count": 30,
      "window_days": 30
    },
    {
      "currency": "BTC",
      "date": "2026-04-27T12:35:30.000Z",
      "estimator": "garman_klass",
      "exchange": "deribit",
      "frequency": "daily",
      "instrument_name": "BTC-PERPETUAL",
      "rv_annualized": 39.85,
      "sample_count": 30,
      "window_days": 30
    }
  ],
  "meta": {
    "next_cursor": null
  }
}
GET/api/v1/futures/carry
$0.10 default
Description

Dated futures data — pay per request

Documentation

Futures Carry

Returns carry/basis data (mark price minus index price) for dated futures instruments.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance, okx, bybit, kraken)",
      "example": "deribit",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name": {
      "description": "Full futures instrument identifier (e.g., BTC-25DEC26, ETH-25DEC26)",
      "example": "BTC-25DEC26",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for bucketing results",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [],
  "type": "object"
}
Request schema
{
  "properties": {
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "type": "string"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance, okx, bybit, kraken)",
      "example": "deribit",
      "type": "string"
    },
    "instrument_name": {
      "description": "Full futures instrument identifier (e.g., BTC-25DEC26, ETH-25DEC26)",
      "example": "BTC-25DEC26",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for bucketing results",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "type": "string"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    }
  },
  "type": "object"
}
Response schema
{
  "allOf": [
    {
      "properties": {
        "data": {
          "items": {
            "type": "array"
          },
          "type": "array"
        },
        "meta": {
          "properties": {
            "next_cursor": {
              "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,
              "type": "string"
            }
          },
          "required": [
            "next_cursor"
          ],
          "type": "object",
          "x-openapi-ref": "#/components/schemas/PaginationMetaEntity"
        }
      },
      "required": [
        "data",
        "meta"
      ],
      "type": "object",
      "x-openapi-ref": "#/components/schemas/PaginatedResponse"
    },
    {
      "properties": {
        "data": {
          "type": "array"
        }
      }
    }
  ]
}
Example request
{
  "cursor": "test",
  "end": "2026-07-21T10:00:00.000Z",
  "exchange": "deribit",
  "instrument_name": "BTC-25DEC26",
  "limit": 100,
  "resolution": "1m",
  "sort_dir": "ASC",
  "start": "2026-07-14T10:00:00.000Z"
}
Example response
{
  "data": [
    {
      "basis_close": 5503.88,
      "basis_high": 5519.17,
      "basis_low": 5497.57,
      "basis_open": 5503.88,
      "minute": "2024-12-10T00:00:00.000Z",
      "timestamp": 1733788800000
    },
    {
      "basis_close": 5497.57,
      "basis_high": 5534.09,
      "basis_low": 5497.65,
      "basis_open": 5503.88,
      "minute": "2024-12-10T00:01:00.000Z",
      "timestamp": 1733788860000
    }
  ],
  "meta": {
    "next_cursor": "eyJtaW51dGUiOiIyMDI0LTEyLTEwIDAwOjAxOjAwIn0="
  }
}
GET/api/v1/futures/catalog
$0.10 default
Description

Dated futures data — pay per request

Documentation

Futures Catalog

Returns a list of available futures instruments.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "currency": {
      "description": "Filter by base currency (e.g., BTC, ETH, SOL)",
      "example": "BTC",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "cursor": {
      "description": "Pagination cursor from a previous response",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "description": "Filter by exchange (e.g., deribit, binance, okx, bybit, hyperliquid)",
      "example": "deribit",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of instruments to return (1-1000)",
      "example": 100,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "maturity": {
      "description": "Filter by maturity/expiry date (e.g., 25DEC26, 27JUN25)",
      "example": "25DEC26",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [],
  "type": "object"
}
Request schema
{
  "properties": {
    "currency": {
      "description": "Filter by base currency (e.g., BTC, ETH, SOL)",
      "example": "BTC",
      "type": "string"
    },
    "cursor": {
      "description": "Pagination cursor from a previous response",
      "type": "string"
    },
    "exchange": {
      "description": "Filter by exchange (e.g., deribit, binance, okx, bybit, hyperliquid)",
      "example": "deribit",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of instruments to return (1-1000)",
      "example": 100,
      "type": "number"
    },
    "maturity": {
      "description": "Filter by maturity/expiry date (e.g., 25DEC26, 27JUN25)",
      "example": "25DEC26",
      "type": "string"
    }
  },
  "type": "object"
}
Example request
{
  "currency": "BTC",
  "cursor": "test",
  "exchange": "deribit",
  "limit": 100,
  "maturity": "25DEC26"
}
Example response
[
  {
    "exchange": "binance",
    "instrument_name": "BNBUSD_251226"
  },
  {
    "exchange": "binance",
    "instrument_name": "BNBUSD_260327"
  },
  {
    "exchange": "deribit",
    "instrument_name": "BTC-25DEC26"
  }
]
GET/api/v1/futures/flow
$0.10 default
Description

Dated futures data — pay per request

Documentation

Futures Flow Summary

Returns an aggregated flow summary for dated futures including total trades, buy/sell volume split, net OI change, block trade stats, liquidation pressure (long/short breakdown), most active instruments, notable trades, and notable liquidations. One call returns everything pre-computed.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "currency": {
      "description": "Base currency (e.g. BTC, ETH). Required.",
      "example": "BTC",
      "required": true,
      "type": "string",
      "x-parameter-location": "query"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance)",
      "example": "deribit",
      "required": true,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "min_amount": {
      "description": "Minimum contract amount per trade to include. Filters dust before aggregating.",
      "example": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "top_n": {
      "default": 10,
      "description": "Number of notable trades and most active instruments to return. Default 10.",
      "example": 10,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    }
  },
  "required": [
    "exchange",
    "currency"
  ],
  "type": "object"
}
Request schema
{
  "properties": {
    "currency": {
      "description": "Base currency (e.g. BTC, ETH). Required.",
      "example": "BTC",
      "type": "string"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "type": "string"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance)",
      "example": "deribit",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "min_amount": {
      "description": "Minimum contract amount per trade to include. Filters dust before aggregating.",
      "example": 1,
      "type": "number"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "top_n": {
      "default": 10,
      "description": "Number of notable trades and most active instruments to return. Default 10.",
      "example": 10,
      "type": "number"
    }
  },
  "required": [
    "exchange",
    "currency"
  ],
  "type": "object"
}
Example request
{
  "currency": "BTC",
  "cursor": "test",
  "end": "2026-07-21T10:00:00.000Z",
  "exchange": "deribit",
  "limit": 100,
  "min_amount": 1,
  "sort_dir": "ASC",
  "start": "2026-07-14T10:00:00.000Z",
  "top_n": 10
}
Example response
{
  "notable_liquidations": [],
  "notable_trades": [],
  "summary": {
    "avg_price": 95000,
    "block_trade_count": 8,
    "block_trade_volume": 400,
    "buy_volume": 700.2,
    "largest_liquidation_usd": 250000,
    "liquidation_count": 45,
    "long_liquidation_count": 30,
    "long_liquidation_usd": 1800000,
    "most_active_instruments": [
      {
        "instrument_name": "BTC-25DEC26",
        "net_oi_change": 80,
        "trade_count": 150,
        "volume": 500
      }
    ],
    "net_oi_change": 120.5,
    "sell_volume": 534.3,
    "short_liquidation_count": 15,
    "short_liquidation_usd": 700000,
    "total_liquidation_usd": 2500000,
    "total_trades": 500,
    "total_volume": 1234.5,
    "vwap": 95100
  }
}
GET/api/v1/futures/level1
$0.10 default
Description

Dated futures data — pay per request

Documentation

Futures Level 1

Returns level 1 order book data for futures instruments.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance, okx, bybit, kraken)",
      "example": "deribit",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name": {
      "description": "Full futures instrument identifier (e.g., BTC-25DEC26, ETH-25DEC26)",
      "example": "BTC-25DEC26",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for bucketing results",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [],
  "type": "object"
}
Request schema
{
  "properties": {
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "type": "string"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance, okx, bybit, kraken)",
      "example": "deribit",
      "type": "string"
    },
    "instrument_name": {
      "description": "Full futures instrument identifier (e.g., BTC-25DEC26, ETH-25DEC26)",
      "example": "BTC-25DEC26",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for bucketing results",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "type": "string"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    }
  },
  "type": "object"
}
Response schema
{
  "allOf": [
    {
      "properties": {
        "data": {
          "items": {
            "type": "array"
          },
          "type": "array"
        },
        "meta": {
          "properties": {
            "next_cursor": {
              "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,
              "type": "string"
            }
          },
          "required": [
            "next_cursor"
          ],
          "type": "object",
          "x-openapi-ref": "#/components/schemas/PaginationMetaEntity"
        }
      },
      "required": [
        "data",
        "meta"
      ],
      "type": "object",
      "x-openapi-ref": "#/components/schemas/PaginatedResponse"
    },
    {
      "properties": {
        "data": {
          "type": "array"
        }
      }
    }
  ]
}
Example request
{
  "cursor": "test",
  "end": "2026-07-21T10:00:00.000Z",
  "exchange": "deribit",
  "instrument_name": "BTC-25DEC26",
  "limit": 100,
  "resolution": "1m",
  "sort_dir": "ASC",
  "start": "2026-07-14T10:00:00.000Z"
}
Example response
{
  "data": [
    {
      "ask_price_close": 109225,
      "ask_price_high": 109367.5,
      "ask_price_low": 109207.5,
      "ask_price_open": 109330,
      "ask_size_close": 40000,
      "ask_size_high": 59890,
      "ask_size_low": 490,
      "ask_size_open": 700,
      "bid_ask_spread_close": 42.5,
      "bid_ask_spread_high": 192.5,
      "bid_ask_spread_low": 2.5,
      "bid_ask_spread_open": 35,
      "bid_price_close": 109182.5,
      "bid_price_high": 109347.5,
      "bid_price_low": 109120,
      "bid_price_open": 109295,
      "bid_size_close": 40000,
      "bid_size_high": 48510,
      "bid_size_low": 320,
      "bid_size_open": 5730,
      "date": "2025-11-04 11:00:00",
      "total_liquidity_avg": 23645.138121546963,
      "total_liquidity_close": 80000,
      "total_liquidity_high": 99890,
      "total_liquidity_low": 1110,
      "total_liquidity_open": 40700
    },
    {
      "ask_price_close": 109135,
      "ask_price_high": 109315,
      "ask_price_low": 109135,
      "ask_price_open": 109215,
      "ask_size_close": 700,
      "ask_size_high": 135000,
      "ask_size_low": 700,
      "ask_size_open": 6980,
      "bid_ask_spread_close": 10,
      "bid_ask_spread_high": 112.5,
      "bid_ask_spread_low": 5,
      "bid_ask_spread_open": 27.5,
      "bid_price_close": 109125,
      "bid_price_high": 109242.5,
      "bid_price_low": 109110,
      "bid_price_open": 109187.5,
      "bid_size_close": 3520,
      "bid_size_high": 45000,
      "bid_size_low": 40,
      "bid_size_open": 7460,
      "date": "2025-11-04 11:01:00",
      "total_liquidity_avg": 21844.923547400613,
      "total_liquidity_close": 4220,
      "total_liquidity_high": 148430,
      "total_liquidity_low": 740,
      "total_liquidity_open": 7250
    },
    {
      "ask_price_close": 109182.5,
      "ask_price_high": 109330,
      "ask_price_low": 109135,
      "ask_price_open": 109135,
      "ask_size_close": 700,
      "ask_size_high": 90000,
      "ask_size_low": 670,
      "ask_size_open": 700,
      "bid_ask_spread_close": 20,
      "bid_ask_spread_high": 165,
      "bid_ask_spread_low": 5,
      "bid_ask_spread_open": 10,
      "bid_price_close": 109162.5,
      "bid_price_high": 109260,
      "bid_price_low": 109110,
      "bid_price_open": 109125,
      "bid_size_close": 4550,
      "bid_size_high": 45000,
      "bid_size_low": 40,
      "bid_size_open": 4370,
      "date": "2025-11-04 11:02:00",
      "total_liquidity_avg": 21753.74203821656,
      "total_liquidity_close": 5250,
      "total_liquidity_high": 103430,
      "total_liquidity_low": 1220,
      "total_liquidity_open": 6200
    }
  ],
  "meta": {
    "next_cursor": "eyJtaW51dGUiOiIyMDI1LTExLTA0IDEyOjM5OjAwIn0="
  }
}
GET/api/v1/futures/liquidations
$0.10 default
Description

Dated futures data — pay per request

Documentation

Futures Liquidation History

Returns individual forced liquidation events for dated futures. Supports filtering by direction, position side, and minimum USD amount. Data available for binance, bybit, and okx exchanges.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "direction": {
      "description": "Filter by liquidation order direction (buy = short squeeze, sell = long liquidation)",
      "enum": [
        "buy",
        "sell"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance, okx, bybit, kraken)",
      "example": "deribit",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name": {
      "description": "Full futures instrument identifier (e.g., BTC-25DEC26, ETH-25DEC26)",
      "example": "BTC-25DEC26",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "min_amount_usd": {
      "description": "Minimum liquidation value in USD. Filters out small liquidations.",
      "example": 1000,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "position_side": {
      "description": "Filter by position side being liquidated",
      "enum": [
        "long",
        "short"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "sort": {
      "default": "timestamp",
      "description": "Sort field. Default: timestamp.",
      "enum": [
        "timestamp",
        "amount_usd",
        "price"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "sort_dir": {
      "default": "DESC",
      "description": "Sort direction. Defaults to DESC (newest/largest first).",
      "enum": [
        "ASC",
        "DESC"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [],
  "type": "object"
}
Request schema
{
  "properties": {
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "type": "string"
    },
    "direction": {
      "description": "Filter by liquidation order direction (buy = short squeeze, sell = long liquidation)",
      "enum": [
        "buy",
        "sell"
      ],
      "type": "string"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance, okx, bybit, kraken)",
      "example": "deribit",
      "type": "string"
    },
    "instrument_name": {
      "description": "Full futures instrument identifier (e.g., BTC-25DEC26, ETH-25DEC26)",
      "example": "BTC-25DEC26",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "min_amount_usd": {
      "description": "Minimum liquidation value in USD. Filters out small liquidations.",
      "example": 1000,
      "type": "number"
    },
    "position_side": {
      "description": "Filter by position side being liquidated",
      "enum": [
        "long",
        "short"
      ],
      "type": "string"
    },
    "sort": {
      "default": "timestamp",
      "description": "Sort field. Default: timestamp.",
      "enum": [
        "timestamp",
        "amount_usd",
        "price"
      ],
      "type": "string"
    },
    "sort_dir": {
      "default": "DESC",
      "description": "Sort direction. Defaults to DESC (newest/largest first).",
      "enum": [
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    }
  },
  "type": "object"
}
Response schema
{
  "allOf": [
    {
      "properties": {
        "data": {
          "items": {
            "type": "array"
          },
          "type": "array"
        },
        "meta": {
          "properties": {
            "next_cursor": {
              "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,
              "type": "string"
            }
          },
          "required": [
            "next_cursor"
          ],
          "type": "object",
          "x-openapi-ref": "#/components/schemas/PaginationMetaEntity"
        }
      },
      "required": [
        "data",
        "meta"
      ],
      "type": "object",
      "x-openapi-ref": "#/components/schemas/PaginatedResponse"
    },
    {
      "properties": {
        "data": {
          "type": "array"
        }
      }
    }
  ]
}
Example request
{
  "cursor": "test",
  "direction": "buy",
  "end": "2026-07-21T10:00:00.000Z",
  "exchange": "deribit",
  "instrument_name": "BTC-25DEC26",
  "limit": 100,
  "min_amount_usd": 1000,
  "position_side": "long",
  "sort": "timestamp",
  "sort_dir": "DESC",
  "start": "2026-07-14T10:00:00.000Z"
}
Example response
{
  "data": [
    {
      "amount": 0.075,
      "amount_base": 0.075,
      "amount_usd": 5114.05,
      "category": "forced",
      "currency": "BTC",
      "date": "2026-02-26T18:22:26.628Z",
      "days_to_expiry": 121.2,
      "direction": "sell",
      "exchange": "binance",
      "index_price": 68222.5,
      "instrument_name": "BTCUSD_250627",
      "margin_type": "linear",
      "mark_price": 68187.5,
      "maturity": "250627",
      "order_id": null,
      "position_side": "long",
      "price": 68187.4,
      "timestamp": 1772104946628,
      "trade_id": null
    }
  ],
  "meta": {
    "next_cursor": "eyJ0aW1lc3RhbXAiOjE3NzIxMDQ5NDYwMDB9"
  }
}
GET/api/v1/futures/metadata
$0.10 default
Description

Dated futures data — pay per request

Documentation

Futures Metadata

Returns metadata for a specific futures instrument including data availability, total record count, and pagination information.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "exchange": {
      "description": "Exchange name",
      "example": "deribit",
      "required": true,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name": {
      "description": "Instrument name",
      "example": "BTC-25DEC26",
      "required": true,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Number of records per page for pagination calculation",
      "example": 100,
      "maximum": 100,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    }
  },
  "required": [
    "exchange",
    "instrument_name"
  ],
  "type": "object"
}
Request schema
{
  "properties": {
    "exchange": {
      "description": "Exchange name",
      "example": "deribit",
      "type": "string"
    },
    "instrument_name": {
      "description": "Instrument name",
      "example": "BTC-25DEC26",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Number of records per page for pagination calculation",
      "example": 100,
      "maximum": 100,
      "minimum": 1,
      "type": "number"
    }
  },
  "required": [
    "exchange",
    "instrument_name"
  ],
  "type": "object"
}
Response schema
{
  "properties": {
    "end_date": {
      "description": "End date of available data (ISO 8601 format)",
      "example": "2025-11-21T23:59:00.000Z",
      "type": "string"
    },
    "exchange": {
      "description": "Exchange name",
      "example": "deribit",
      "type": "string"
    },
    "instrument_name": {
      "description": "Instrument name",
      "example": "BTC-PERPETUAL",
      "type": "string"
    },
    "start_date": {
      "description": "Start date of available data (ISO 8601 format)",
      "example": "2020-01-01T00:00:00.000Z",
      "type": "string"
    },
    "total_count": {
      "description": "Total count of records available",
      "example": 1500000,
      "type": "number"
    },
    "total_pages": {
      "description": "Total number of pages based on the provided limit",
      "example": 15000,
      "type": "number"
    }
  },
  "required": [
    "exchange",
    "instrument_name",
    "start_date",
    "end_date",
    "total_count",
    "total_pages"
  ],
  "type": "object",
  "x-openapi-ref": "#/components/schemas/MetadataResponseEntity"
}
Example request
{
  "exchange": "deribit",
  "instrument_name": "BTC-25DEC26",
  "limit": 100
}
Example response
{
  "end_date": "2025-11-21T23:59:00.000Z",
  "exchange": "deribit",
  "instrument_name": "BTC-PERPETUAL",
  "start_date": "2020-01-01T00:00:00.000Z",
  "total_count": 1500000,
  "total_pages": 15000
}
GET/api/v1/futures/ohlcvt
$0.10 default
Description

Dated futures data — pay per request

Documentation

Futures OHLCVT Market Data

Retrieves Open, High, Low, Close, Volume, and Trade statistics for futures and perpetual
contracts.

**Key Features:**
- Historical trade-based OHLC candlestick data
- Buy/sell volume breakdown
- Trade count statistics
- Liquidation and block trade volume tracking
- Mark and index price references
- Support for multiple resolutions (1m, 5m, 1h)
- Filter by instrument type (perpetual vs dated futures)

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance, okx, bybit, kraken)",
      "example": "deribit",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name": {
      "description": "Full futures instrument identifier (e.g., BTC-25DEC26, ETH-25DEC26)",
      "example": "BTC-25DEC26",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for bucketing results",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [],
  "type": "object"
}
Request schema
{
  "properties": {
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "type": "string"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance, okx, bybit, kraken)",
      "example": "deribit",
      "type": "string"
    },
    "instrument_name": {
      "description": "Full futures instrument identifier (e.g., BTC-25DEC26, ETH-25DEC26)",
      "example": "BTC-25DEC26",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for bucketing results",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "type": "string"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    }
  },
  "type": "object"
}
Response schema
{
  "allOf": [
    {
      "properties": {
        "data": {
          "items": {
            "type": "array"
          },
          "type": "array"
        },
        "meta": {
          "properties": {
            "next_cursor": {
              "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,
              "type": "string"
            }
          },
          "required": [
            "next_cursor"
          ],
          "type": "object",
          "x-openapi-ref": "#/components/schemas/PaginationMetaEntity"
        }
      },
      "required": [
        "data",
        "meta"
      ],
      "type": "object",
      "x-openapi-ref": "#/components/schemas/PaginatedResponse"
    },
    {
      "properties": {
        "data": {
          "items": {
            "properties": {
              "block_trade_buy_volume": {
                "description": "Volume from block trade buys",
                "example": 100,
                "nullable": true,
                "type": "number"
              },
              "block_trade_sell_volume": {
                "description": "Volume from block trade sells",
                "example": 150,
                "nullable": true,
                "type": "number"
              },
              "buy_trades_count": {
                "description": "Number of buy trades",
                "example": 150,
                "type": "number"
              },
              "buy_volume": {
                "description": "Buy-side volume (direction = buy)",
                "example": 1500.5,
                "type": "number"
              },
              "close": {
                "description": "Closing trade price in the time bucket",
                "example": 42500,
                "type": "number"
              },
              "currency": {
                "description": "Base currency",
                "example": "BTC",
                "type": "string"
              },
              "date": {
                "description": "Date in ISO 8601 format (UTC)",
                "example": "2024-12-10T00:00:00.000Z",
                "format": "date-time",
                "type": "string"
              },
              "days_to_expiry": {
                "description": "Days until expiry (NULL for PERPETUAL)",
                "example": 90.5,
                "nullable": true,
                "type": "number"
              },
              "exchange": {
                "description": "Exchange name",
                "example": "deribit",
                "type": "string"
              },
              "high": {
                "description": "Highest trade price in the time bucket",
                "example": 42890.75,
                "type": "number"
              },
              "index_price": {
                "description": "Index price at bar close (for reference)",
                "example": 42505,
                "nullable": true,
                "type": "number"
              },
              "instrument_name": {
                "description": "Instrument name",
                "example": "BTC-25DEC26",
                "type": "string"
              },
              "liquidation_long_volume": {
                "description": "Volume from long liquidations (forced sell orders)",
                "example": 75.5,
                "nullable": true,
                "type": "number"
              },
              "liquidation_short_volume": {
                "description": "Volume from short liquidations (forced buy orders)",
                "example": 50.25,
                "nullable": true,
                "type": "number"
              },
              "low": {
                "description": "Lowest trade price in the time bucket",
                "example": 41920.25,
                "type": "number"
              },
              "mark_price": {
                "description": "Mark price at bar close (for reference)",
                "example": 42500.5,
                "nullable": true,
                "type": "number"
              },
              "open": {
                "description": "Opening trade price in the time bucket",
                "example": 42150.5,
                "type": "number"
              },
              "sell_trades_count": {
                "description": "Number of sell trades",
                "example": 120,
                "type": "number"
              },
              "sell_volume": {
                "description": "Sell-side volume (direction = sell)",
                "example": 1200.3,
                "type": "number"
              },
              "trades_count": {
                "description": "Total number of trades (buy + sell)",
                "example": 270,
                "type": "number"
              },
              "volume": {
                "description": "Total volume (buy + sell)",
                "example": 2700.8,
                "type": "number"
              },
              "vwap": {
                "description": "Volume Weighted Average Price (VWAP)",
                "example": 42350.5,
                "type": "number"
              }
            },
            "required": [
              "date",
              "open",
              "high",
              "low",
              "close",
              "vwap",
              "volume",
              "buy_volume",
              "sell_volume",
              "trades_count",
              "buy_trades_count",
              "sell_trades_count"
            ],
            "type": "object",
            "x-openapi-ref": "#/components/schemas/FuturesOhlcvtEntity"
          },
          "type": "array"
        }
      }
    }
  ]
}
Example request
{
  "cursor": "test",
  "end": "2026-07-21T10:00:00.000Z",
  "exchange": "deribit",
  "instrument_name": "BTC-25DEC26",
  "limit": 100,
  "resolution": "1m",
  "sort_dir": "ASC",
  "start": "2026-07-14T10:00:00.000Z"
}
Example response
{
  "data": [
    {
      "block_trade_buy_volume": null,
      "block_trade_sell_volume": null,
      "buy_trades_count": 0,
      "buy_volume": 0,
      "close": 109307.5,
      "date": "2025-11-04 11:00:00",
      "days_to_expiry": 324.9166666666667,
      "high": 109307.5,
      "index_price": 103721.05,
      "liquidation_long_volume": null,
      "liquidation_short_volume": null,
      "low": 109307.5,
      "mark_price": 109224.93,
      "open": 109307.5,
      "sell_trades_count": 2,
      "sell_volume": 5830,
      "trades_count": 2,
      "volume": 5830,
      "vwap": 109307.5
    },
    {
      "block_trade_buy_volume": null,
      "block_trade_sell_volume": null,
      "buy_trades_count": 0,
      "buy_volume": 0,
      "close": 109139.43,
      "date": "2025-11-04 11:01:00",
      "days_to_expiry": 324.91597222222225,
      "high": 109139.43,
      "index_price": 103641.58,
      "liquidation_long_volume": 5800,
      "liquidation_short_volume": 3200,
      "low": 109139.43,
      "mark_price": 109139.43,
      "open": 109139.43,
      "sell_trades_count": 0,
      "sell_volume": 0,
      "trades_count": 0,
      "volume": 0,
      "vwap": 109139.43
    },
    {
      "block_trade_buy_volume": 50000,
      "block_trade_sell_volume": 35000,
      "buy_trades_count": 0,
      "buy_volume": 0,
      "close": 109183.39,
      "date": "2025-11-04 11:02:00",
      "days_to_expiry": 324.91527777777776,
      "high": 109183.39,
      "index_price": 103686.12,
      "liquidation_long_volume": null,
      "liquidation_short_volume": null,
      "low": 109183.39,
      "mark_price": 109183.39,
      "open": 109183.39,
      "sell_trades_count": 0,
      "sell_volume": 0,
      "trades_count": 0,
      "volume": 0,
      "vwap": 109183.39
    }
  ],
  "meta": {
    "next_cursor": "eyJtaW51dGUiOiIyMDI1LTExLTA0IDEyOjM5OjAwIn0="
  }
}
GET/api/v1/futures/open-interest
$0.10 default
Description

Dated futures data — pay per request

Documentation

Futures Open Interest

Aggregates open interest across the selected instrument or currency using the requested resolution.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance, okx, bybit, kraken)",
      "example": "deribit",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name": {
      "description": "Full futures instrument identifier (e.g., BTC-25DEC26, ETH-25DEC26)",
      "example": "BTC-25DEC26",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for bucketing results",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [],
  "type": "object"
}
Request schema
{
  "properties": {
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "type": "string"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance, okx, bybit, kraken)",
      "example": "deribit",
      "type": "string"
    },
    "instrument_name": {
      "description": "Full futures instrument identifier (e.g., BTC-25DEC26, ETH-25DEC26)",
      "example": "BTC-25DEC26",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for bucketing results",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "type": "string"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    }
  },
  "type": "object"
}
Response schema
{
  "allOf": [
    {
      "properties": {
        "data": {
          "items": {
            "type": "array"
          },
          "type": "array"
        },
        "meta": {
          "properties": {
            "next_cursor": {
              "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,
              "type": "string"
            }
          },
          "required": [
            "next_cursor"
          ],
          "type": "object",
          "x-openapi-ref": "#/components/schemas/PaginationMetaEntity"
        }
      },
      "required": [
        "data",
        "meta"
      ],
      "type": "object",
      "x-openapi-ref": "#/components/schemas/PaginatedResponse"
    },
    {
      "properties": {
        "data": {
          "type": "array"
        }
      }
    }
  ]
}
Example request
{
  "cursor": "test",
  "end": "2026-07-21T10:00:00.000Z",
  "exchange": "deribit",
  "instrument_name": "BTC-25DEC26",
  "limit": 100,
  "resolution": "1m",
  "sort_dir": "ASC",
  "start": "2026-07-14T10:00:00.000Z"
}
Example response
{
  "data": [
    {
      "date": "2025-11-04 11:00:00",
      "oi_close": 559.6348745657242,
      "oi_high": 559.7229134379199,
      "oi_low": 559.0182983385522,
      "oi_open": 559.1289933303566
    },
    {
      "date": "2025-11-04 11:01:00",
      "oi_close": 560.0732934009276,
      "oi_high": 560.0817095526673,
      "oi_low": 559.5719114785235,
      "oi_open": 559.666130831103
    },
    {
      "date": "2025-11-04 11:02:00",
      "oi_close": 559.8441531321868,
      "oi_high": 560.0728315462629,
      "oi_low": 559.4456693812764,
      "oi_open": 560.0728315462629
    }
  ],
  "meta": {
    "next_cursor": "eyJtaW51dGUiOiIyMDI1LTExLTA0IDEyOjM5OjAwIn0="
  }
}
GET/api/v1/futures/orderbook
$0.10 default
Description

Dated futures data — pay per request

Documentation

Futures L2 Orderbook

Returns aggregated L2 orderbook depth metrics for futures instruments.

**Key Features:**
- Bid/ask liquidity at 4 depth levels (10, 20, 50, 100 levels)
- Order book imbalance metrics (OHLC + average) per depth
- Microprice (liquidity-weighted mid-price)
- Snapshot count per time bucket
- Support for multiple resolutions (1m, 5m, 15m, 1h, 4h, 1d)

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance, okx, bybit, kraken)",
      "example": "deribit",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name": {
      "description": "Full futures instrument identifier (e.g., BTC-25DEC26, ETH-25DEC26)",
      "example": "BTC-25DEC26",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for bucketing results",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [],
  "type": "object"
}
Request schema
{
  "properties": {
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "type": "string"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance, okx, bybit, kraken)",
      "example": "deribit",
      "type": "string"
    },
    "instrument_name": {
      "description": "Full futures instrument identifier (e.g., BTC-25DEC26, ETH-25DEC26)",
      "example": "BTC-25DEC26",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for bucketing results",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "type": "string"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    }
  },
  "type": "object"
}
Response schema
{
  "allOf": [
    {
      "properties": {
        "data": {
          "items": {
            "type": "array"
          },
          "type": "array"
        },
        "meta": {
          "properties": {
            "next_cursor": {
              "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,
              "type": "string"
            }
          },
          "required": [
            "next_cursor"
          ],
          "type": "object",
          "x-openapi-ref": "#/components/schemas/PaginationMetaEntity"
        }
      },
      "required": [
        "data",
        "meta"
      ],
      "type": "object",
      "x-openapi-ref": "#/components/schemas/PaginatedResponse"
    },
    {
      "properties": {
        "data": {
          "type": "array"
        }
      }
    }
  ]
}
Example request
{
  "cursor": "test",
  "end": "2026-07-21T10:00:00.000Z",
  "exchange": "deribit",
  "instrument_name": "BTC-25DEC26",
  "limit": 100,
  "resolution": "1m",
  "sort_dir": "ASC",
  "start": "2026-07-14T10:00:00.000Z"
}
Example response
{
  "data": [
    {
      "ask_liq_100_avg": 142.1,
      "ask_liq_100_close": 152.3,
      "ask_liq_100_high": 180,
      "ask_liq_100_low": 110.5,
      "ask_liq_100_open": 145.2,
      "ask_liq_10_avg": 16.2,
      "ask_liq_10_close": 17.8,
      "ask_liq_10_high": 22.1,
      "ask_liq_10_low": 10.5,
      "ask_liq_10_open": 15.3,
      "ask_liq_20_avg": 31,
      "ask_liq_20_close": 33.5,
      "ask_liq_20_high": 42,
      "ask_liq_20_low": 22.5,
      "ask_liq_20_open": 30.1,
      "ask_liq_50_avg": 77.5,
      "ask_liq_50_close": 82.1,
      "ask_liq_50_high": 95,
      "ask_liq_50_low": 60.2,
      "ask_liq_50_open": 78.5,
      "bid_liq_100_avg": 124.3,
      "bid_liq_100_close": 130.8,
      "bid_liq_100_high": 155,
      "bid_liq_100_low": 95.2,
      "bid_liq_100_open": 120.5,
      "bid_liq_10_avg": 13.1,
      "bid_liq_10_close": 14.3,
      "bid_liq_10_high": 18.2,
      "bid_liq_10_low": 8.1,
      "bid_liq_10_open": 12.5,
      "bid_liq_20_avg": 26.4,
      "bid_liq_20_close": 28.1,
      "bid_liq_20_high": 35,
      "bid_liq_20_low": 18.5,
      "bid_liq_20_open": 25.8,
      "bid_liq_50_avg": 66.8,
      "bid_liq_50_close": 70.5,
      "bid_liq_50_high": 82,
      "bid_liq_50_low": 50.3,
      "bid_liq_50_open": 65.2,
      "currency": "BTC",
      "date": "2026-01-22 07:20:00",
      "days_to_expiry": 64.7,
      "exchange": "deribit",
      "imbalance_100_avg": -0.06,
      "imbalance_100_close": -0.08,
      "imbalance_100_high": 0.12,
      "imbalance_100_low": -0.2,
      "imbalance_100_open": -0.09,
      "imbalance_10_avg": -0.09,
      "imbalance_10_close": -0.11,
      "imbalance_10_high": 0.25,
      "imbalance_10_low": -0.35,
      "imbalance_10_open": -0.1,
      "imbalance_20_avg": -0.07,
      "imbalance_20_close": -0.09,
      "imbalance_20_high": 0.2,
      "imbalance_20_low": -0.3,
      "imbalance_20_open": -0.08,
      "imbalance_50_avg": -0.06,
      "imbalance_50_close": -0.08,
      "imbalance_50_high": 0.15,
      "imbalance_50_low": -0.25,
      "imbalance_50_open": -0.09,
      "instrument_name": "BTC-25DEC26",
      "instrument_type": "future",
      "maturity": "25DEC26",
      "microprice_avg": 105260.8,
      "microprice_close": 105290.2,
      "microprice_high": 105320,
      "microprice_low": 105180,
      "microprice_open": 105250.5,
      "snapshot_count": 60
    }
  ],
  "meta": {
    "next_cursor": "eyJtaW51dGUiOiIyMDI2LTAxLTIyIDA3OjIxOjAwIn0="
  }
}
GET/api/v1/futures/orderbook-raw
$0.10 default
Description

Dated futures data — pay per request

Documentation

Futures L2 Orderbook Raw Snapshots

Returns raw L2 orderbook snapshots for futures instruments with full bid/ask arrays.

**Key Features:**
- Full bid/ask price levels (up to 100 levels each)
- Pre-computed liquidity at 4 depth levels (10, 20, 50, 100)
- Order book imbalance per depth
- Microprice (liquidity-weighted mid-price)
- Individual snapshots (not aggregated) — 30-day data retention

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "block_only": {
      "default": false,
      "description": "If true, only return trades with a block_trade_id (block trades).",
      "required": false,
      "type": "boolean",
      "x-parameter-location": "query"
    },
    "currency": {
      "description": "Base currency (e.g. BTC, ETH). Returns trades across ALL dated futures for this currency. Either currency or instrument_name is required.",
      "example": "BTC",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "direction": {
      "description": "Filter by trade direction (aggressor side)",
      "enum": [
        "buy",
        "sell"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance)",
      "example": "deribit",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name": {
      "description": "Full futures instrument identifier (e.g., BTC-25DEC26). Either instrument_name or currency is required.",
      "example": "BTC-25DEC26",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "maturity": {
      "description": "Filter by maturity date (e.g. 25DEC26). Only for dated futures.",
      "example": "25DEC26",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "min_amount": {
      "description": "Minimum trade amount (in contracts). Filters out dust trades.",
      "example": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "sort": {
      "default": "timestamp",
      "description": "Sort field. Default: timestamp.",
      "enum": [
        "timestamp",
        "amount",
        "price"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "sort_dir": {
      "default": "ASC",
      "description": "Sort direction. Defaults to ASC for instrument mode, DESC for currency mode.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "strategy": {
      "description": "Filter by strategy label. Accepts comma-separated values (e.g. calendar_spread).",
      "enum": [
        "COMBO_CALENDAR_SPREAD",
        "COMBO_HEDGE_ROLL_TO_FUTURE",
        "COMBO_HEDGE_ROLL_TO_PERP",
        "COMBO_PERP_VS_FUTURE",
        "COMBO_ROLL_BACK",
        "COMBO_ROLL_FORWARD",
        "Closed COMBO_CALENDAR_SPREAD",
        "Closed COMBO_PERP_VS_FUTURE_UNWIND",
        "Closed SHORT_FUTURE",
        "LONG_FUTURE",
        "Opened COMBO_CALENDAR_SPREAD",
        "Opened COMBO_PERP_VS_FUTURE_SPREAD",
        "Opened SHORT_FUTURE",
        "SHORT_FUTURE"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "top_n": {
      "description": "Return top N trades by the sort field (DESC). Overrides limit and sort_dir. No pagination cursor returned.",
      "example": 20,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    }
  },
  "required": [],
  "type": "object"
}
Request schema
{
  "properties": {
    "block_only": {
      "default": false,
      "description": "If true, only return trades with a block_trade_id (block trades).",
      "type": "boolean"
    },
    "currency": {
      "description": "Base currency (e.g. BTC, ETH). Returns trades across ALL dated futures for this currency. Either currency or instrument_name is required.",
      "example": "BTC",
      "type": "string"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "type": "string"
    },
    "direction": {
      "description": "Filter by trade direction (aggressor side)",
      "enum": [
        "buy",
        "sell"
      ],
      "type": "string"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance)",
      "example": "deribit",
      "type": "string"
    },
    "instrument_name": {
      "description": "Full futures instrument identifier (e.g., BTC-25DEC26). Either instrument_name or currency is required.",
      "example": "BTC-25DEC26",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "maturity": {
      "description": "Filter by maturity date (e.g. 25DEC26). Only for dated futures.",
      "example": "25DEC26",
      "type": "string"
    },
    "min_amount": {
      "description": "Minimum trade amount (in contracts). Filters out dust trades.",
      "example": 1,
      "type": "number"
    },
    "sort": {
      "default": "timestamp",
      "description": "Sort field. Default: timestamp.",
      "enum": [
        "timestamp",
        "amount",
        "price"
      ],
      "type": "string"
    },
    "sort_dir": {
      "default": "ASC",
      "description": "Sort direction. Defaults to ASC for instrument mode, DESC for currency mode.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "strategy": {
      "description": "Filter by strategy label. Accepts comma-separated values (e.g. calendar_spread).",
      "example": "calendar_spread",
      "type": "string"
    },
    "top_n": {
      "description": "Return top N trades by the sort field (DESC). Overrides limit and sort_dir. No pagination cursor returned.",
      "example": 20,
      "type": "number"
    }
  },
  "type": "object"
}
Response schema
{
  "allOf": [
    {
      "properties": {
        "data": {
          "items": {
            "type": "array"
          },
          "type": "array"
        },
        "meta": {
          "properties": {
            "next_cursor": {
              "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,
              "type": "string"
            }
          },
          "required": [
            "next_cursor"
          ],
          "type": "object",
          "x-openapi-ref": "#/components/schemas/PaginationMetaEntity"
        }
      },
      "required": [
        "data",
        "meta"
      ],
      "type": "object",
      "x-openapi-ref": "#/components/schemas/PaginatedResponse"
    },
    {
      "properties": {
        "data": {
          "type": "array"
        }
      }
    }
  ]
}
Example request
{
  "block_only": false,
  "currency": "BTC",
  "cursor": "test",
  "direction": "buy",
  "end": "2026-07-21T10:00:00.000Z",
  "exchange": "deribit",
  "instrument_name": "BTC-25DEC26",
  "limit": 100,
  "maturity": "25DEC26",
  "min_amount": 1,
  "sort": "timestamp",
  "sort_dir": "ASC",
  "start": "2026-07-14T10:00:00.000Z",
  "strategy": "calendar_spread",
  "top_n": 20
}
Example response
{
  "data": [
    {
      "ask_liquidity_10": 15.3,
      "ask_liquidity_100": 145.2,
      "ask_liquidity_20": 30.1,
      "ask_liquidity_50": 78.5,
      "asks": [
        {
          "price": 105250.5,
          "size": 2.1
        },
        {
          "price": 105251,
          "size": 1.2
        }
      ],
      "bid_liquidity_10": 12.5,
      "bid_liquidity_100": 120.5,
      "bid_liquidity_20": 25.8,
      "bid_liquidity_50": 65.2,
      "bids": [
        {
          "price": 105250,
          "size": 1.5
        },
        {
          "price": 105249.5,
          "size": 0.8
        }
      ],
      "currency": "BTC",
      "date": "2026-01-22T07:20:57.000Z",
      "days_to_expiry": 64.7,
      "depth": 100,
      "exchange": "deribit",
      "imbalance_10": -0.1,
      "imbalance_100": -0.09,
      "imbalance_20": -0.08,
      "imbalance_50": -0.09,
      "instrument_name": "BTC-25DEC26",
      "instrument_type": "future",
      "margin_type": "inverse",
      "maturity": "25DEC26",
      "microprice": 105250.3,
      "multiplier": 1,
      "timestamp": 1769066457868
    }
  ],
  "meta": {
    "next_cursor": "eyJ0aW1lc3RhbXAiOjE3NjkwNjY0NTc4Njh9"
  }
}
GET/api/v1/futures/reference-price
$0.10 default
Description

Dated futures data — pay per request

Documentation

Futures Reference Prices

Returns reference price data for futures instruments.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance, okx, bybit, kraken)",
      "example": "deribit",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name": {
      "description": "Full futures instrument identifier (e.g., BTC-25DEC26, ETH-25DEC26)",
      "example": "BTC-25DEC26",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for bucketing results",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [],
  "type": "object"
}
Request schema
{
  "properties": {
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "type": "string"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance, okx, bybit, kraken)",
      "example": "deribit",
      "type": "string"
    },
    "instrument_name": {
      "description": "Full futures instrument identifier (e.g., BTC-25DEC26, ETH-25DEC26)",
      "example": "BTC-25DEC26",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for bucketing results",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "type": "string"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    }
  },
  "type": "object"
}
Response schema
{
  "allOf": [
    {
      "properties": {
        "data": {
          "items": {
            "type": "array"
          },
          "type": "array"
        },
        "meta": {
          "properties": {
            "next_cursor": {
              "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,
              "type": "string"
            }
          },
          "required": [
            "next_cursor"
          ],
          "type": "object",
          "x-openapi-ref": "#/components/schemas/PaginationMetaEntity"
        }
      },
      "required": [
        "data",
        "meta"
      ],
      "type": "object",
      "x-openapi-ref": "#/components/schemas/PaginatedResponse"
    },
    {
      "properties": {
        "data": {
          "type": "array"
        }
      }
    }
  ]
}
Example request
{
  "cursor": "test",
  "end": "2026-07-21T10:00:00.000Z",
  "exchange": "deribit",
  "instrument_name": "BTC-25DEC26",
  "limit": 100,
  "resolution": "1m",
  "sort_dir": "ASC",
  "start": "2026-07-14T10:00:00.000Z"
}
Example response
{
  "data": [
    {
      "date": "2025-11-04 11:00:00",
      "index_price_close": 103721.05,
      "index_price_high": 103834.66,
      "index_price_low": 103703.62,
      "index_price_open": 103814.31,
      "mark_price_close": 109224.93,
      "mark_price_high": 109355.83,
      "mark_price_low": 109207.75,
      "mark_price_open": 109334.18,
      "underlying_price": 19321.37
    },
    {
      "date": "2025-11-04 11:01:00",
      "index_price_close": 103641.58,
      "index_price_high": 103732.25,
      "index_price_low": 103639.67,
      "index_price_open": 103715.64,
      "mark_price_close": 109139.43,
      "mark_price_high": 109237.22,
      "mark_price_low": 109137.79,
      "mark_price_open": 109218.83,
      "underlying_price": 19321.37
    },
    {
      "date": "2025-11-04 11:02:00",
      "index_price_close": 103686.53,
      "index_price_high": 103755.75,
      "index_price_low": 103641.87,
      "index_price_open": 103641.87,
      "mark_price_close": 109184.1,
      "mark_price_high": 109261.87,
      "mark_price_low": 109139.52,
      "mark_price_open": 109139.52,
      "underlying_price": 19321.37
    }
  ],
  "meta": {
    "next_cursor": "eyJtaW51dGUiOiIyMDI1LTExLTA0IDEyOjM5OjAwIn0="
  }
}
GET/api/v1/futures/snapshot
$0.10 default
Description

Dated futures data — pay per request

Documentation

Futures Snapshot

Returns a snapshot of all futures instruments for a given exchange at a single minute. If no date is provided, returns the latest available snapshot. Currency is optional.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "currency": {
      "description": "Base currency filter (e.g., BTC, ETH)",
      "example": "BTC",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "date": {
      "description": "Exact date/time for the snapshot in ISO 8601 format (UTC). If omitted, returns the latest available snapshot.",
      "example": "2026-01-20T10:00:00Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance, okx, bybit, bullish, derive). Required.",
      "example": "deribit",
      "required": true,
      "type": "string",
      "x-parameter-location": "query"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for the snapshot. At 1m (default), returns raw minute-level data. At higher resolutions (5m, 1h, etc.), data is aggregated into the specified bucket.",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [
    "exchange"
  ],
  "type": "object"
}
Request schema
{
  "properties": {
    "currency": {
      "description": "Base currency filter (e.g., BTC, ETH)",
      "example": "BTC",
      "type": "string"
    },
    "date": {
      "description": "Exact date/time for the snapshot in ISO 8601 format (UTC). If omitted, returns the latest available snapshot.",
      "example": "2026-01-20T10:00:00Z",
      "format": "date-time",
      "type": "string"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance, okx, bybit, bullish, derive). Required.",
      "example": "deribit",
      "type": "string"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for the snapshot. At 1m (default), returns raw minute-level data. At higher resolutions (5m, 1h, etc.), data is aggregated into the specified bucket.",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "type": "string"
    }
  },
  "required": [
    "exchange"
  ],
  "type": "object"
}
Example request
{
  "currency": "BTC",
  "date": "2026-01-20T10:00:00Z",
  "exchange": "deribit",
  "resolution": "1m"
}
Example response
{
  "data": [
    {
      "ask_price": 109225,
      "ask_size": 40000,
      "bid_ask_spread": 42.5,
      "bid_price": 109182.5,
      "bid_size": 40000,
      "currency": "BTC",
      "date": "2025-11-04 11:00:00",
      "days_to_expiry": 324.92,
      "exchange": "deribit",
      "index_price": 103721.05,
      "instrument_name": "BTC-25DEC26",
      "mark_price": 109224.93,
      "oi": 559.63,
      "volume_usd_24h": 3297310
    },
    {
      "ask_price": 3215,
      "ask_size": 600,
      "bid_ask_spread": 5,
      "bid_price": 3210,
      "bid_size": 500,
      "currency": "ETH",
      "date": "2025-11-04 11:00:00",
      "days_to_expiry": 143.92,
      "exchange": "deribit",
      "index_price": 3180.12,
      "instrument_name": "ETH-25DEC26",
      "mark_price": 3212.45,
      "oi": 12450.5,
      "volume_usd_24h": 8540000
    }
  ],
  "meta": {
    "minute": "2025-11-04 11:00:00"
  }
}
GET/api/v1/futures/ticker-history
$0.10 default
Description

Dated futures data — pay per request

Documentation

Futures Ticker History

Returns historical ticker data for futures instruments.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance, okx, bybit, kraken)",
      "example": "deribit",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name": {
      "description": "Full futures instrument identifier (e.g., BTC-25DEC26, ETH-25DEC26)",
      "example": "BTC-25DEC26",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for bucketing results",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [],
  "type": "object"
}
Request schema
{
  "properties": {
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "type": "string"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance, okx, bybit, kraken)",
      "example": "deribit",
      "type": "string"
    },
    "instrument_name": {
      "description": "Full futures instrument identifier (e.g., BTC-25DEC26, ETH-25DEC26)",
      "example": "BTC-25DEC26",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for bucketing results",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "type": "string"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    }
  },
  "type": "object"
}
Response schema
{
  "allOf": [
    {
      "properties": {
        "data": {
          "items": {
            "type": "array"
          },
          "type": "array"
        },
        "meta": {
          "properties": {
            "next_cursor": {
              "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,
              "type": "string"
            }
          },
          "required": [
            "next_cursor"
          ],
          "type": "object",
          "x-openapi-ref": "#/components/schemas/PaginationMetaEntity"
        }
      },
      "required": [
        "data",
        "meta"
      ],
      "type": "object",
      "x-openapi-ref": "#/components/schemas/PaginatedResponse"
    },
    {
      "properties": {
        "data": {
          "type": "array"
        }
      }
    }
  ]
}
Example request
{
  "cursor": "test",
  "end": "2026-07-21T10:00:00.000Z",
  "exchange": "deribit",
  "instrument_name": "BTC-25DEC26",
  "limit": 100,
  "resolution": "1m",
  "sort_dir": "ASC",
  "start": "2026-07-14T10:00:00.000Z"
}
Example response
{
  "data": [
    {
      "ask_price": 109225,
      "ask_size": 40000,
      "bid_ask_spread": 42.5,
      "bid_price": 109182.5,
      "bid_size": 40000,
      "date": "2025-11-04 11:00:00",
      "days_to_expiry": 324.9166666666667,
      "index_price": 103721.05,
      "mark_price": 109224.93,
      "oi": 559.6348745657242,
      "volume_usd_24h": 3297310
    },
    {
      "ask_price": 109135,
      "ask_size": 700,
      "bid_ask_spread": 10,
      "bid_price": 109125,
      "bid_size": 3520,
      "date": "2025-11-04 11:01:00",
      "days_to_expiry": 324.91597222222225,
      "index_price": 103641.58,
      "mark_price": 109139.43,
      "oi": 560.0732934009276,
      "volume_usd_24h": 3297220
    },
    {
      "ask_price": 109182.5,
      "ask_size": 700,
      "bid_ask_spread": 20,
      "bid_price": 109162.5,
      "bid_size": 4550,
      "date": "2025-11-04 11:02:00",
      "days_to_expiry": 324.91527777777776,
      "index_price": 103686.53,
      "mark_price": 109184.1,
      "oi": 559.8441531321868,
      "volume_usd_24h": 3297220
    }
  ],
  "meta": {
    "next_cursor": "eyJtaW51dGUiOiIyMDI1LTExLTA0IDEyOjM5OjAwIn0="
  }
}
GET/api/v1/futures/trades
$0.10 default
Description

Dated futures data — pay per request

Documentation

Futures Trade History

Returns futures trades with full trade details. Supports two modes: (1) instrument mode — provide instrument_name for a single dated future, (2) currency mode — provide currency (e.g. BTC) for ALL dated futures trades across all instruments. Additional filters: direction, block_only, min_amount, strategy, maturity, sort, sort_dir. Use top_n for quick top-trades scanning.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "block_only": {
      "default": false,
      "description": "If true, only return trades with a block_trade_id (block trades).",
      "required": false,
      "type": "boolean",
      "x-parameter-location": "query"
    },
    "currency": {
      "description": "Base currency (e.g. BTC, ETH). Returns trades across ALL dated futures for this currency. Either currency or instrument_name is required.",
      "example": "BTC",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "direction": {
      "description": "Filter by trade direction (aggressor side)",
      "enum": [
        "buy",
        "sell"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance)",
      "example": "deribit",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name": {
      "description": "Full futures instrument identifier (e.g., BTC-25DEC26). Either instrument_name or currency is required.",
      "example": "BTC-25DEC26",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "maturity": {
      "description": "Filter by maturity date (e.g. 25DEC26). Only for dated futures.",
      "example": "25DEC26",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "min_amount": {
      "description": "Minimum trade amount (in contracts). Filters out dust trades.",
      "example": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "sort": {
      "default": "timestamp",
      "description": "Sort field. Default: timestamp.",
      "enum": [
        "timestamp",
        "amount",
        "price"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "sort_dir": {
      "default": "ASC",
      "description": "Sort direction. Defaults to ASC for instrument mode, DESC for currency mode.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "strategy": {
      "description": "Filter by strategy label. Accepts comma-separated values (e.g. calendar_spread).",
      "enum": [
        "COMBO_CALENDAR_SPREAD",
        "COMBO_HEDGE_ROLL_TO_FUTURE",
        "COMBO_HEDGE_ROLL_TO_PERP",
        "COMBO_PERP_VS_FUTURE",
        "COMBO_ROLL_BACK",
        "COMBO_ROLL_FORWARD",
        "Closed COMBO_CALENDAR_SPREAD",
        "Closed COMBO_PERP_VS_FUTURE_UNWIND",
        "Closed SHORT_FUTURE",
        "LONG_FUTURE",
        "Opened COMBO_CALENDAR_SPREAD",
        "Opened COMBO_PERP_VS_FUTURE_SPREAD",
        "Opened SHORT_FUTURE",
        "SHORT_FUTURE"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "top_n": {
      "description": "Return top N trades by the sort field (DESC). Overrides limit and sort_dir. No pagination cursor returned.",
      "example": 20,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    }
  },
  "required": [],
  "type": "object"
}
Request schema
{
  "properties": {
    "block_only": {
      "default": false,
      "description": "If true, only return trades with a block_trade_id (block trades).",
      "type": "boolean"
    },
    "currency": {
      "description": "Base currency (e.g. BTC, ETH). Returns trades across ALL dated futures for this currency. Either currency or instrument_name is required.",
      "example": "BTC",
      "type": "string"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "type": "string"
    },
    "direction": {
      "description": "Filter by trade direction (aggressor side)",
      "enum": [
        "buy",
        "sell"
      ],
      "type": "string"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance)",
      "example": "deribit",
      "type": "string"
    },
    "instrument_name": {
      "description": "Full futures instrument identifier (e.g., BTC-25DEC26). Either instrument_name or currency is required.",
      "example": "BTC-25DEC26",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "maturity": {
      "description": "Filter by maturity date (e.g. 25DEC26). Only for dated futures.",
      "example": "25DEC26",
      "type": "string"
    },
    "min_amount": {
      "description": "Minimum trade amount (in contracts). Filters out dust trades.",
      "example": 1,
      "type": "number"
    },
    "sort": {
      "default": "timestamp",
      "description": "Sort field. Default: timestamp.",
      "enum": [
        "timestamp",
        "amount",
        "price"
      ],
      "type": "string"
    },
    "sort_dir": {
      "default": "ASC",
      "description": "Sort direction. Defaults to ASC for instrument mode, DESC for currency mode.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "strategy": {
      "description": "Filter by strategy label. Accepts comma-separated values (e.g. calendar_spread).",
      "example": "calendar_spread",
      "type": "string"
    },
    "top_n": {
      "description": "Return top N trades by the sort field (DESC). Overrides limit and sort_dir. No pagination cursor returned.",
      "example": 20,
      "type": "number"
    }
  },
  "type": "object"
}
Response schema
{
  "allOf": [
    {
      "properties": {
        "data": {
          "items": {
            "type": "array"
          },
          "type": "array"
        },
        "meta": {
          "properties": {
            "next_cursor": {
              "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,
              "type": "string"
            }
          },
          "required": [
            "next_cursor"
          ],
          "type": "object",
          "x-openapi-ref": "#/components/schemas/PaginationMetaEntity"
        }
      },
      "required": [
        "data",
        "meta"
      ],
      "type": "object",
      "x-openapi-ref": "#/components/schemas/PaginatedResponse"
    },
    {
      "properties": {
        "data": {
          "type": "array"
        }
      }
    }
  ]
}
Example request
{
  "block_only": false,
  "currency": "BTC",
  "cursor": "test",
  "direction": "buy",
  "end": "2026-07-21T10:00:00.000Z",
  "exchange": "deribit",
  "instrument_name": "BTC-25DEC26",
  "limit": 100,
  "maturity": "25DEC26",
  "min_amount": 1,
  "sort": "timestamp",
  "sort_dir": "ASC",
  "start": "2026-07-14T10:00:00.000Z",
  "strategy": "calendar_spread",
  "top_n": 20
}
Example response
{
  "data": [
    {
      "amount": 23750,
      "basis": 7665.779999999999,
      "block_trade_id": "",
      "combo_id": "BTC-FS-25SEP26_26JUN26",
      "combo_trade_id": "386518051",
      "date": "2025-11-04T11:01:55.040Z",
      "days_to_expiry": 363.9709,
      "direction": "sell",
      "index_price": 109621.72,
      "instrument_name": "BTC-25DEC26",
      "maturity": "25SEP26",
      "oi_before": 1095380,
      "oi_change": null,
      "open_interest": 1095380,
      "price": 117287.5,
      "strategy": "COMBO_CALENDAR_SPREAD",
      "tick_direction": 2,
      "timestamp": 1758876115040,
      "trade_id": "386518052"
    },
    {
      "amount": 50000,
      "basis": 7845.75,
      "block_trade_id": "",
      "combo_id": "BTC-FS-25SEP26_26JUN26",
      "combo_trade_id": "386539874",
      "date": "2025-11-04T11:01:55.040Z",
      "days_to_expiry": 363.866,
      "direction": "buy",
      "index_price": 108916.75,
      "instrument_name": "BTC-25DEC26",
      "maturity": "25SEP26",
      "oi_before": 2935210,
      "oi_change": 50000,
      "open_interest": 2985210,
      "price": 116762.5,
      "strategy": "COMBO_CALENDAR_SPREAD",
      "tick_direction": 2,
      "timestamp": 1758885173562,
      "trade_id": "386539875"
    },
    {
      "amount": 50000,
      "basis": 7883.729999999996,
      "block_trade_id": "",
      "combo_id": "BTC-FS-25SEP26_26JUN26",
      "combo_trade_id": "386539877",
      "date": "2025-11-04T11:01:55.040Z",
      "days_to_expiry": 363.866,
      "direction": "sell",
      "index_price": 108913.27,
      "instrument_name": "BTC-25DEC26",
      "maturity": "25SEP26",
      "oi_before": 2985210,
      "oi_change": 50000,
      "open_interest": 3035210,
      "price": 116797,
      "strategy": "COMBO_CALENDAR_SPREAD",
      "tick_direction": 0,
      "timestamp": 1758885174875,
      "trade_id": "386539878"
    }
  ],
  "meta": {
    "next_cursor": "eyJ0aW1lc3RhbXAiOiIxNzU4ODk5MjAxMDY0IiwidHJhZGVfaWQiOiIzODY2MjA5ODgifQ=="
  }
}
GET/api/v1/futures/trades/summary
$0.10 default
Description

Dated futures data — pay per request

Documentation

Futures Trades Summary

Returns aggregated trade statistics for dated futures grouped by a chosen axis. One compact call replaces scanning individual trades. Returns grouped stats: trade_count, volume, buy/sell_volume, net_oi_change, block stats, avg_price, vwap. Group by: exchange, instrument_name, maturity, direction, or strategy.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "block_only": {
      "default": false,
      "description": "If true, only include block trades.",
      "required": false,
      "type": "boolean",
      "x-parameter-location": "query"
    },
    "currency": {
      "description": "Base currency (e.g. BTC, ETH)",
      "example": "BTC",
      "required": true,
      "type": "string",
      "x-parameter-location": "query"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "direction": {
      "description": "Filter by trade direction",
      "enum": [
        "buy",
        "sell"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance)",
      "example": "deribit",
      "required": true,
      "type": "string",
      "x-parameter-location": "query"
    },
    "group_by": {
      "description": "Axis to group results by",
      "enum": [
        "exchange",
        "instrument_name",
        "maturity",
        "direction",
        "strategy"
      ],
      "required": true,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "maturity": {
      "description": "Filter by maturity date (e.g. 25DEC26).",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "min_amount": {
      "description": "Minimum trade amount (in contracts).",
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "strategy": {
      "description": "Filter by strategy label. Accepts comma-separated values.",
      "enum": [
        "COMBO_CALENDAR_SPREAD",
        "COMBO_HEDGE_ROLL_TO_FUTURE",
        "COMBO_HEDGE_ROLL_TO_PERP",
        "COMBO_PERP_VS_FUTURE",
        "COMBO_ROLL_BACK",
        "COMBO_ROLL_FORWARD",
        "Closed COMBO_CALENDAR_SPREAD",
        "Closed COMBO_PERP_VS_FUTURE_UNWIND",
        "Closed SHORT_FUTURE",
        "LONG_FUTURE",
        "Opened COMBO_CALENDAR_SPREAD",
        "Opened COMBO_PERP_VS_FUTURE_SPREAD",
        "Opened SHORT_FUTURE",
        "SHORT_FUTURE"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [
    "exchange",
    "currency",
    "group_by"
  ],
  "type": "object"
}
Request schema
{
  "properties": {
    "block_only": {
      "default": false,
      "description": "If true, only include block trades.",
      "type": "boolean"
    },
    "currency": {
      "description": "Base currency (e.g. BTC, ETH)",
      "example": "BTC",
      "type": "string"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "type": "string"
    },
    "direction": {
      "description": "Filter by trade direction",
      "enum": [
        "buy",
        "sell"
      ],
      "type": "string"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance)",
      "example": "deribit",
      "type": "string"
    },
    "group_by": {
      "description": "Axis to group results by",
      "enum": [
        "exchange",
        "instrument_name",
        "maturity",
        "direction",
        "strategy"
      ],
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "maturity": {
      "description": "Filter by maturity date (e.g. 25DEC26).",
      "type": "string"
    },
    "min_amount": {
      "description": "Minimum trade amount (in contracts).",
      "type": "number"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "strategy": {
      "description": "Filter by strategy label. Accepts comma-separated values.",
      "type": "string"
    }
  },
  "required": [
    "exchange",
    "currency",
    "group_by"
  ],
  "type": "object"
}
Example request
{
  "block_only": false,
  "currency": "BTC",
  "cursor": "test",
  "direction": "buy",
  "end": "2026-07-21T10:00:00.000Z",
  "exchange": "deribit",
  "group_by": "exchange",
  "limit": 100,
  "maturity": "test",
  "min_amount": 1,
  "sort_dir": "ASC",
  "start": "2026-07-14T10:00:00.000Z",
  "strategy": "test"
}
Example response
{
  "data": [
    {
      "avg_price": 95000,
      "block_trade_count": 5,
      "block_trade_volume": 200,
      "buy_volume": 700.2,
      "group_key": "25DEC26",
      "net_oi_change": 120.5,
      "sell_volume": 534.3,
      "trade_count": 150,
      "volume": 1234.5,
      "vwap": 95100
    }
  ],
  "metadata": {
    "group_by": "maturity",
    "total_trades": 150,
    "total_volume": 1234.5
  }
}
GET/api/v1/futures/volume
$0.10 default
Description

Dated futures data — pay per request

Documentation

Futures Volume Stats

Returns rolling 24h volume metrics (base and USD) for futures instruments filtered by currency with optional aggregation and interval bucketing.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance, okx, bybit, kraken)",
      "example": "deribit",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name": {
      "description": "Full futures instrument identifier (e.g., BTC-25DEC26, ETH-25DEC26)",
      "example": "BTC-25DEC26",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for bucketing results",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [],
  "type": "object"
}
Request schema
{
  "properties": {
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "type": "string"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance, okx, bybit, kraken)",
      "example": "deribit",
      "type": "string"
    },
    "instrument_name": {
      "description": "Full futures instrument identifier (e.g., BTC-25DEC26, ETH-25DEC26)",
      "example": "BTC-25DEC26",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for bucketing results",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "type": "string"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    }
  },
  "type": "object"
}
Response schema
{
  "allOf": [
    {
      "properties": {
        "data": {
          "items": {
            "type": "array"
          },
          "type": "array"
        },
        "meta": {
          "properties": {
            "next_cursor": {
              "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,
              "type": "string"
            }
          },
          "required": [
            "next_cursor"
          ],
          "type": "object",
          "x-openapi-ref": "#/components/schemas/PaginationMetaEntity"
        }
      },
      "required": [
        "data",
        "meta"
      ],
      "type": "object",
      "x-openapi-ref": "#/components/schemas/PaginatedResponse"
    },
    {
      "properties": {
        "data": {
          "type": "array"
        }
      }
    }
  ]
}
Example request
{
  "cursor": "test",
  "end": "2026-07-21T10:00:00.000Z",
  "exchange": "deribit",
  "instrument_name": "BTC-25DEC26",
  "limit": 100,
  "resolution": "1m",
  "sort_dir": "ASC",
  "start": "2026-07-14T10:00:00.000Z"
}
Example response
{
  "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="
  }
}
GET/api/v1/hyperliquid/node/fills
$0.10 default
Description

Hyperliquid - HyperCore data. Pay per request

Documentation

HyperCore Fills

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.

Required query parameter: wallet.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "crossed": {
      "description": "Filter taker fills. 1 = taker, 0 = maker.",
      "enum": [
        0,
        1
      ],
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "currency": {
      "description": "Base currency (e.g. BTC, NVDA, BASED).",
      "example": "BTC",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "dir": {
      "description": "Position direction from the node fill (e.g. Open Long, Close Short, Buy, Sell).",
      "example": "Open Long",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name": {
      "description": "Normalized instrument name (e.g. BTC-USD, xyz:NVDA-USD, BASED_USDC).",
      "example": "BTC-USD",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name_raw": {
      "description": "Raw Hyperliquid node coin (e.g. BTC, xyz:NVDA, @305, #40).",
      "example": "BTC",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "is_liquidation": {
      "description": "Filter liquidation fills. 1 = liquidation, 0 = non-liquidation.",
      "enum": [
        0,
        1
      ],
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "market_type": {
      "description": "Hyperliquid node market type.",
      "enum": [
        "perp",
        "perp_hip3",
        "spot",
        "prediction"
      ],
      "example": "perp",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "min_notional": {
      "description": "Minimum fill notional in USDC.",
      "example": 10000,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "side": {
      "description": "Aggressor side.",
      "enum": [
        "buy",
        "sell"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "sort_dir": {
      "default": "DESC",
      "description": "Sort direction by event time. Defaults to DESC for node history endpoints.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "wallet": {
      "description": "Wallet address. Required for raw Hyperliquid node fills.",
      "example": "0x1234567890abcdef1234567890abcdef12345678",
      "required": true,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [
    "wallet"
  ],
  "type": "object"
}
Request schema
{
  "properties": {
    "crossed": {
      "description": "Filter taker fills. 1 = taker, 0 = maker.",
      "enum": [
        0,
        1
      ],
      "type": "number"
    },
    "currency": {
      "description": "Base currency (e.g. BTC, NVDA, BASED).",
      "example": "BTC",
      "type": "string"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "type": "string"
    },
    "dir": {
      "description": "Position direction from the node fill (e.g. Open Long, Close Short, Buy, Sell).",
      "example": "Open Long",
      "type": "string"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "instrument_name": {
      "description": "Normalized instrument name (e.g. BTC-USD, xyz:NVDA-USD, BASED_USDC).",
      "example": "BTC-USD",
      "type": "string"
    },
    "instrument_name_raw": {
      "description": "Raw Hyperliquid node coin (e.g. BTC, xyz:NVDA, @305, #40).",
      "example": "BTC",
      "type": "string"
    },
    "is_liquidation": {
      "description": "Filter liquidation fills. 1 = liquidation, 0 = non-liquidation.",
      "enum": [
        0,
        1
      ],
      "type": "number"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "market_type": {
      "description": "Hyperliquid node market type.",
      "enum": [
        "perp",
        "perp_hip3",
        "spot",
        "prediction"
      ],
      "example": "perp",
      "type": "string"
    },
    "min_notional": {
      "description": "Minimum fill notional in USDC.",
      "example": 10000,
      "type": "number"
    },
    "side": {
      "description": "Aggressor side.",
      "enum": [
        "buy",
        "sell"
      ],
      "type": "string"
    },
    "sort_dir": {
      "default": "DESC",
      "description": "Sort direction by event time. Defaults to DESC for node history endpoints.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "wallet": {
      "description": "Wallet address. Required for raw Hyperliquid node fills.",
      "example": "0x1234567890abcdef1234567890abcdef12345678",
      "type": "string"
    }
  },
  "required": [
    "wallet"
  ],
  "type": "object"
}
Response schema
{
  "properties": {
    "data": {
      "items": {
        "type": "object"
      },
      "type": "array"
    },
    "meta": {
      "properties": {
        "next_cursor": {
          "description": "Opaque pagination cursor. Pass this value as the cursor query parameter for the next page.",
          "nullable": true,
          "type": "string"
        },
        "warnings": {
          "description": "Structured response warnings. Omitted when there are no warnings.",
          "items": {
            "properties": {
              "code": {
                "enum": [
                  "STALE_SNAPSHOT",
                  "UNRESOLVED_INSTRUMENT"
                ],
                "type": "string"
              },
              "message": {
                "type": "string"
              }
            },
            "required": [
              "code",
              "message"
            ],
            "type": "object"
          },
          "type": "array"
        }
      },
      "required": [
        "next_cursor"
      ],
      "type": "object"
    }
  },
  "required": [
    "data",
    "meta"
  ],
  "type": "object"
}
Example request
{
  "crossed": 0,
  "currency": "BTC",
  "cursor": "test",
  "dir": "Open Long",
  "end": "2026-07-21T10:00:00.000Z",
  "instrument_name": "BTC-USD",
  "instrument_name_raw": "BTC",
  "is_liquidation": 0,
  "limit": 100,
  "market_type": "perp",
  "min_notional": 10000,
  "side": "buy",
  "sort_dir": "DESC",
  "start": "2026-07-14T10:00:00.000Z",
  "wallet": "0x1234567890abcdef1234567890abcdef12345678"
}
Example response
{
  "data": [
    {}
  ],
  "meta": {
    "next_cursor": "test",
    "warnings": [
      {
        "code": "STALE_SNAPSHOT",
        "message": "test"
      }
    ]
  }
}
GET/api/v1/hyperliquid/node/funding-payments
$0.10 default
Description

Hyperliquid - HyperCore data. Pay per request

Documentation

HyperCore Funding Payments

Returns per-wallet hourly HyperCore funding payments from native misc events. Requires wallet. This is payment-level data, not just market-level funding rates.

Required query parameter: wallet.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "currency": {
      "description": "Base currency (e.g. BTC, NVDA, BASED).",
      "example": "BTC",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name": {
      "description": "Normalized instrument name (e.g. BTC-USD, xyz:NVDA-USD, BASED_USDC).",
      "example": "BTC-USD",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name_raw": {
      "description": "Raw Hyperliquid node coin (e.g. BTC, xyz:NVDA, @305, #40).",
      "example": "BTC",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "market_type": {
      "description": "Hyperliquid node market type.",
      "enum": [
        "perp",
        "perp_hip3",
        "spot",
        "prediction"
      ],
      "example": "perp",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "min_abs_usdc": {
      "description": "Minimum absolute funding payment in USDC.",
      "example": 10,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "sort_dir": {
      "default": "DESC",
      "description": "Sort direction by event time. Defaults to DESC for node history endpoints.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "wallet": {
      "description": "Wallet address. Required for Hyperliquid funding payments.",
      "example": "0x1234567890abcdef1234567890abcdef12345678",
      "required": true,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [
    "wallet"
  ],
  "type": "object"
}
Request schema
{
  "properties": {
    "currency": {
      "description": "Base currency (e.g. BTC, NVDA, BASED).",
      "example": "BTC",
      "type": "string"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "type": "string"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "instrument_name": {
      "description": "Normalized instrument name (e.g. BTC-USD, xyz:NVDA-USD, BASED_USDC).",
      "example": "BTC-USD",
      "type": "string"
    },
    "instrument_name_raw": {
      "description": "Raw Hyperliquid node coin (e.g. BTC, xyz:NVDA, @305, #40).",
      "example": "BTC",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "market_type": {
      "description": "Hyperliquid node market type.",
      "enum": [
        "perp",
        "perp_hip3",
        "spot",
        "prediction"
      ],
      "example": "perp",
      "type": "string"
    },
    "min_abs_usdc": {
      "description": "Minimum absolute funding payment in USDC.",
      "example": 10,
      "type": "number"
    },
    "sort_dir": {
      "default": "DESC",
      "description": "Sort direction by event time. Defaults to DESC for node history endpoints.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "wallet": {
      "description": "Wallet address. Required for Hyperliquid funding payments.",
      "example": "0x1234567890abcdef1234567890abcdef12345678",
      "type": "string"
    }
  },
  "required": [
    "wallet"
  ],
  "type": "object"
}
Response schema
{
  "properties": {
    "data": {
      "items": {
        "type": "object"
      },
      "type": "array"
    },
    "meta": {
      "properties": {
        "next_cursor": {
          "description": "Opaque pagination cursor. Pass this value as the cursor query parameter for the next page.",
          "nullable": true,
          "type": "string"
        },
        "warnings": {
          "description": "Structured response warnings. Omitted when there are no warnings.",
          "items": {
            "properties": {
              "code": {
                "enum": [
                  "STALE_SNAPSHOT",
                  "UNRESOLVED_INSTRUMENT"
                ],
                "type": "string"
              },
              "message": {
                "type": "string"
              }
            },
            "required": [
              "code",
              "message"
            ],
            "type": "object"
          },
          "type": "array"
        }
      },
      "required": [
        "next_cursor"
      ],
      "type": "object"
    }
  },
  "required": [
    "data",
    "meta"
  ],
  "type": "object"
}
Example request
{
  "currency": "BTC",
  "cursor": "test",
  "end": "2026-07-21T10:00:00.000Z",
  "instrument_name": "BTC-USD",
  "instrument_name_raw": "BTC",
  "limit": 100,
  "market_type": "perp",
  "min_abs_usdc": 10,
  "sort_dir": "DESC",
  "start": "2026-07-14T10:00:00.000Z",
  "wallet": "0x1234567890abcdef1234567890abcdef12345678"
}
Example response
{
  "data": [
    {}
  ],
  "meta": {
    "next_cursor": "test",
    "warnings": [
      {
        "code": "STALE_SNAPSHOT",
        "message": "test"
      }
    ]
  }
}
GET/api/v1/hyperliquid/node/instruments
$0.10 default
Description

Hyperliquid - HyperCore data. Pay per request

Documentation

HyperCore Instruments

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.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "currency": {
      "description": "Base currency.",
      "example": "BTC",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name": {
      "description": "Normalized instrument name.",
      "example": "BTC-USD",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name_raw": {
      "description": "Raw Hyperliquid node coin (e.g. BTC, xyz:NVDA, @305, #40).",
      "example": "@305",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of mappings to return (1-1000).",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "market_type": {
      "description": "Market type.",
      "enum": [
        "perp",
        "perp_hip3",
        "spot",
        "prediction"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "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.",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [],
  "type": "object"
}
Request schema
{
  "properties": {
    "currency": {
      "description": "Base currency.",
      "example": "BTC",
      "type": "string"
    },
    "instrument_name": {
      "description": "Normalized instrument name.",
      "example": "BTC-USD",
      "type": "string"
    },
    "instrument_name_raw": {
      "description": "Raw Hyperliquid node coin (e.g. BTC, xyz:NVDA, @305, #40).",
      "example": "@305",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of mappings to return (1-1000).",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "market_type": {
      "description": "Market type.",
      "enum": [
        "perp",
        "perp_hip3",
        "spot",
        "prediction"
      ],
      "type": "string"
    },
    "start": {
      "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.",
      "format": "date-time",
      "type": "string"
    }
  },
  "type": "object"
}
Response schema
{
  "properties": {
    "data": {
      "items": {
        "type": "object"
      },
      "type": "array"
    },
    "meta": {
      "properties": {
        "next_cursor": {
          "description": "Opaque pagination cursor. Pass this value as the cursor query parameter for the next page.",
          "nullable": true,
          "type": "string"
        },
        "warnings": {
          "description": "Structured response warnings. Omitted when there are no warnings.",
          "items": {
            "properties": {
              "code": {
                "enum": [
                  "STALE_SNAPSHOT",
                  "UNRESOLVED_INSTRUMENT"
                ],
                "type": "string"
              },
              "message": {
                "type": "string"
              }
            },
            "required": [
              "code",
              "message"
            ],
            "type": "object"
          },
          "type": "array"
        }
      },
      "required": [
        "next_cursor"
      ],
      "type": "object"
    }
  },
  "required": [
    "data",
    "meta"
  ],
  "type": "object"
}
Example request
{
  "currency": "BTC",
  "instrument_name": "BTC-USD",
  "instrument_name_raw": "@305",
  "limit": 100,
  "market_type": "perp",
  "start": "2026-07-23T12:00:00Z"
}
Example response
{
  "data": [
    {}
  ],
  "meta": {
    "next_cursor": "test",
    "warnings": [
      {
        "code": "STALE_SNAPSHOT",
        "message": "test"
      }
    ]
  }
}
GET/api/v1/hyperliquid/node/l2-orderbook
$0.10 default
Description

Hyperliquid - HyperCore data. Pay per request

Documentation

HyperCore L2 Orderbook

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.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "date": {
      "description": "Snapshot time in ISO 8601 format. If omitted, returns latest available snapshot.",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name": {
      "description": "Normalized instrument name.",
      "example": "BTC-USD",
      "required": true,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [
    "instrument_name"
  ],
  "type": "object"
}
Request schema
{
  "properties": {
    "date": {
      "description": "Snapshot time in ISO 8601 format. If omitted, returns latest available snapshot.",
      "format": "date-time",
      "type": "string"
    },
    "instrument_name": {
      "description": "Normalized instrument name.",
      "example": "BTC-USD",
      "type": "string"
    }
  },
  "required": [
    "instrument_name"
  ],
  "type": "object"
}
Response schema
{
  "properties": {
    "data": {
      "items": {
        "type": "object"
      },
      "type": "array"
    },
    "meta": {
      "properties": {
        "next_cursor": {
          "description": "Opaque pagination cursor. Pass this value as the cursor query parameter for the next page.",
          "nullable": true,
          "type": "string"
        },
        "warnings": {
          "description": "Structured response warnings. Omitted when there are no warnings.",
          "items": {
            "properties": {
              "code": {
                "enum": [
                  "STALE_SNAPSHOT",
                  "UNRESOLVED_INSTRUMENT"
                ],
                "type": "string"
              },
              "message": {
                "type": "string"
              }
            },
            "required": [
              "code",
              "message"
            ],
            "type": "object"
          },
          "type": "array"
        }
      },
      "required": [
        "next_cursor"
      ],
      "type": "object"
    }
  },
  "required": [
    "data",
    "meta"
  ],
  "type": "object"
}
Example request
{
  "date": "2026-07-23T12:00:00Z",
  "instrument_name": "BTC-USD"
}
Example response
{
  "data": [
    {}
  ],
  "meta": {
    "next_cursor": "test",
    "warnings": [
      {
        "code": "STALE_SNAPSHOT",
        "message": "test"
      }
    ]
  }
}
GET/api/v1/hyperliquid/node/liquidations
$0.10 default
Description

Hyperliquid - HyperCore data. Pay per request

Documentation

HyperCore Liquidations

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.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "currency": {
      "description": "Base currency (e.g. BTC, NVDA, BASED).",
      "example": "BTC",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "dedupe": {
      "default": false,
      "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.",
      "required": false,
      "type": "boolean",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name": {
      "description": "Normalized instrument name (e.g. BTC-USD, xyz:NVDA-USD, BASED_USDC).",
      "example": "BTC-USD",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name_raw": {
      "description": "Raw Hyperliquid node coin (e.g. BTC, xyz:NVDA, @305, #40).",
      "example": "BTC",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "liquidated_user": {
      "description": "Liquidated wallet address.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "liquidator": {
      "description": "Liquidator wallet address.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "market_type": {
      "description": "Hyperliquid node market type.",
      "enum": [
        "perp",
        "perp_hip3",
        "spot",
        "prediction"
      ],
      "example": "perp",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "min_notional": {
      "description": "Minimum liquidation notional in USDC.",
      "example": 10000,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "resolution": {
      "description": "Optional aggregation resolution. When set, returns per-instrument liquidation buckets instead of event rows.",
      "enum": [
        "5m",
        "15m",
        "1h",
        "1d"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "sort_dir": {
      "default": "DESC",
      "description": "Sort direction by event time. Defaults to DESC for node history endpoints.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "wallet": {
      "description": "Wallet address.",
      "example": "0x1234567890abcdef1234567890abcdef12345678",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [],
  "type": "object"
}
Request schema
{
  "properties": {
    "currency": {
      "description": "Base currency (e.g. BTC, NVDA, BASED).",
      "example": "BTC",
      "type": "string"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "type": "string"
    },
    "dedupe": {
      "default": false,
      "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.",
      "type": "boolean"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "instrument_name": {
      "description": "Normalized instrument name (e.g. BTC-USD, xyz:NVDA-USD, BASED_USDC).",
      "example": "BTC-USD",
      "type": "string"
    },
    "instrument_name_raw": {
      "description": "Raw Hyperliquid node coin (e.g. BTC, xyz:NVDA, @305, #40).",
      "example": "BTC",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "liquidated_user": {
      "description": "Liquidated wallet address.",
      "type": "string"
    },
    "liquidator": {
      "description": "Liquidator wallet address.",
      "type": "string"
    },
    "market_type": {
      "description": "Hyperliquid node market type.",
      "enum": [
        "perp",
        "perp_hip3",
        "spot",
        "prediction"
      ],
      "example": "perp",
      "type": "string"
    },
    "min_notional": {
      "description": "Minimum liquidation notional in USDC.",
      "example": 10000,
      "type": "number"
    },
    "resolution": {
      "description": "Optional aggregation resolution. When set, returns per-instrument liquidation buckets instead of event rows.",
      "enum": [
        "5m",
        "15m",
        "1h",
        "1d"
      ],
      "type": "string"
    },
    "sort_dir": {
      "default": "DESC",
      "description": "Sort direction by event time. Defaults to DESC for node history endpoints.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "wallet": {
      "description": "Wallet address.",
      "example": "0x1234567890abcdef1234567890abcdef12345678",
      "type": "string"
    }
  },
  "type": "object"
}
Response schema
{
  "properties": {
    "data": {
      "items": {
        "type": "object"
      },
      "type": "array"
    },
    "meta": {
      "properties": {
        "next_cursor": {
          "description": "Opaque pagination cursor. Pass this value as the cursor query parameter for the next page.",
          "nullable": true,
          "type": "string"
        },
        "warnings": {
          "description": "Structured response warnings. Omitted when there are no warnings.",
          "items": {
            "properties": {
              "code": {
                "enum": [
                  "STALE_SNAPSHOT",
                  "UNRESOLVED_INSTRUMENT"
                ],
                "type": "string"
              },
              "message": {
                "type": "string"
              }
            },
            "required": [
              "code",
              "message"
            ],
            "type": "object"
          },
          "type": "array"
        }
      },
      "required": [
        "next_cursor"
      ],
      "type": "object"
    }
  },
  "required": [
    "data",
    "meta"
  ],
  "type": "object"
}
Example request
{
  "currency": "BTC",
  "cursor": "test",
  "dedupe": false,
  "end": "2026-07-21T10:00:00.000Z",
  "instrument_name": "BTC-USD",
  "instrument_name_raw": "BTC",
  "limit": 100,
  "liquidated_user": "test",
  "liquidator": "test",
  "market_type": "perp",
  "min_notional": 10000,
  "resolution": "5m",
  "sort_dir": "DESC",
  "start": "2026-07-14T10:00:00.000Z",
  "wallet": "0x1234567890abcdef1234567890abcdef12345678"
}
Example response
{
  "data": [
    {}
  ],
  "meta": {
    "next_cursor": "test",
    "warnings": [
      {
        "code": "STALE_SNAPSHOT",
        "message": "test"
      }
    ]
  }
}
GET/api/v1/hyperliquid/node/prediction-fills
$0.10 default
Description

Hyperliquid - HyperCore data. Pay per request

Documentation

HyperCore Prediction Fills

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.

At least one query parameter is required: instrument_name, condition_id, token_id.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "category": {
      "description": "Prediction category.",
      "example": "crypto",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "condition_id": {
      "description": "Prediction market condition ID.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "event_slug": {
      "description": "Prediction event slug.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name": {
      "description": "Prediction instrument name.",
      "example": "fed-cuts-in-2026-YES",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "min_notional": {
      "description": "Minimum fill notional.",
      "example": 1000,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "outcome": {
      "description": "Outcome side label.",
      "example": "YES",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "side": {
      "description": "Aggressor side.",
      "enum": [
        "buy",
        "sell"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "sort_dir": {
      "default": "DESC",
      "description": "Sort direction by fill time. Defaults to DESC.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "token_id": {
      "description": "Prediction outcome token ID.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "wallet": {
      "description": "Wallet address.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [],
  "type": "object"
}
Request schema
{
  "anyOf": [
    {
      "required": [
        "instrument_name"
      ]
    },
    {
      "required": [
        "condition_id"
      ]
    },
    {
      "required": [
        "token_id"
      ]
    }
  ],
  "properties": {
    "category": {
      "description": "Prediction category.",
      "example": "crypto",
      "type": "string"
    },
    "condition_id": {
      "description": "Prediction market condition ID.",
      "type": "string"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "type": "string"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "event_slug": {
      "description": "Prediction event slug.",
      "type": "string"
    },
    "instrument_name": {
      "description": "Prediction instrument name.",
      "example": "fed-cuts-in-2026-YES",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "min_notional": {
      "description": "Minimum fill notional.",
      "example": 1000,
      "type": "number"
    },
    "outcome": {
      "description": "Outcome side label.",
      "example": "YES",
      "type": "string"
    },
    "side": {
      "description": "Aggressor side.",
      "enum": [
        "buy",
        "sell"
      ],
      "type": "string"
    },
    "sort_dir": {
      "default": "DESC",
      "description": "Sort direction by fill time. Defaults to DESC.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "token_id": {
      "description": "Prediction outcome token ID.",
      "type": "string"
    },
    "wallet": {
      "description": "Wallet address.",
      "type": "string"
    }
  },
  "type": "object"
}
Response schema
{
  "properties": {
    "data": {
      "items": {
        "type": "object"
      },
      "type": "array"
    },
    "meta": {
      "properties": {
        "next_cursor": {
          "description": "Opaque pagination cursor. Pass this value as the cursor query parameter for the next page.",
          "nullable": true,
          "type": "string"
        },
        "warnings": {
          "description": "Structured response warnings. Omitted when there are no warnings.",
          "items": {
            "properties": {
              "code": {
                "enum": [
                  "STALE_SNAPSHOT",
                  "UNRESOLVED_INSTRUMENT"
                ],
                "type": "string"
              },
              "message": {
                "type": "string"
              }
            },
            "required": [
              "code",
              "message"
            ],
            "type": "object"
          },
          "type": "array"
        }
      },
      "required": [
        "next_cursor"
      ],
      "type": "object"
    }
  },
  "required": [
    "data",
    "meta"
  ],
  "type": "object"
}
Example request
{
  "category": "crypto",
  "condition_id": "test",
  "cursor": "test",
  "end": "2026-07-21T10:00:00.000Z",
  "event_slug": "test",
  "instrument_name": "fed-cuts-in-2026-YES",
  "limit": 100,
  "min_notional": 1000,
  "outcome": "YES",
  "side": "buy",
  "sort_dir": "DESC",
  "start": "2026-07-14T10:00:00.000Z",
  "token_id": "test",
  "wallet": "test"
}
Example response
{
  "data": [
    {}
  ],
  "meta": {
    "next_cursor": "test",
    "warnings": [
      {
        "code": "STALE_SNAPSHOT",
        "message": "test"
      }
    ]
  }
}
GET/api/v1/hyperliquid/node/resting-orders
$0.10 default
Description

Hyperliquid - HyperCore data. Pay per request

Documentation

HyperCore Resting Orders

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.

At least one query parameter is required: wallet, instrument_name, instrument_name_raw, currency.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "currency": {
      "description": "Base currency.",
      "example": "BTC",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "Restrict latest snapshot search to this end date.",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name": {
      "description": "Normalized instrument name.",
      "example": "BTC-USD",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name_raw": {
      "description": "Raw Hyperliquid node coin.",
      "example": "BTC",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of resting orders to return (1-1000).",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "market_type": {
      "description": "Market type.",
      "enum": [
        "perp",
        "perp_hip3",
        "spot",
        "prediction"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "max_distance_from_mark": {
      "description": "Maximum absolute distance from mark price in percent. Use this to exclude deep crash bids/asks from near-mark liquidity views.",
      "example": 10,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "min_notional": {
      "description": "Minimum resting order notional.",
      "example": 100000,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "side": {
      "description": "Order side.",
      "enum": [
        "B",
        "A"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Restrict latest snapshot search to this start date.",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "wallet": {
      "description": "Wallet address.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [],
  "type": "object"
}
Request schema
{
  "anyOf": [
    {
      "required": [
        "wallet"
      ]
    },
    {
      "required": [
        "instrument_name"
      ]
    },
    {
      "required": [
        "instrument_name_raw"
      ]
    },
    {
      "required": [
        "currency"
      ]
    }
  ],
  "properties": {
    "currency": {
      "description": "Base currency.",
      "example": "BTC",
      "type": "string"
    },
    "end": {
      "description": "Restrict latest snapshot search to this end date.",
      "format": "date-time",
      "type": "string"
    },
    "instrument_name": {
      "description": "Normalized instrument name.",
      "example": "BTC-USD",
      "type": "string"
    },
    "instrument_name_raw": {
      "description": "Raw Hyperliquid node coin.",
      "example": "BTC",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of resting orders to return (1-1000).",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "market_type": {
      "description": "Market type.",
      "enum": [
        "perp",
        "perp_hip3",
        "spot",
        "prediction"
      ],
      "type": "string"
    },
    "max_distance_from_mark": {
      "description": "Maximum absolute distance from mark price in percent. Use this to exclude deep crash bids/asks from near-mark liquidity views.",
      "example": 10,
      "type": "number"
    },
    "min_notional": {
      "description": "Minimum resting order notional.",
      "example": 100000,
      "type": "number"
    },
    "side": {
      "description": "Order side.",
      "enum": [
        "B",
        "A"
      ],
      "type": "string"
    },
    "start": {
      "description": "Restrict latest snapshot search to this start date.",
      "format": "date-time",
      "type": "string"
    },
    "wallet": {
      "description": "Wallet address.",
      "type": "string"
    }
  },
  "type": "object"
}
Response schema
{
  "properties": {
    "data": {
      "items": {
        "type": "object"
      },
      "type": "array"
    },
    "meta": {
      "properties": {
        "freshness_basis": {
          "description": "Basis used to compute staleness_ms.",
          "enum": [
            "snapshot"
          ],
          "type": "string"
        },
        "next_cursor": {
          "description": "Opaque pagination cursor. Pass this value as the cursor query parameter for the next page.",
          "nullable": true,
          "type": "string"
        },
        "snapshot_interval_ms": {
          "description": "Expected snapshot emission interval in milliseconds.",
          "type": "number"
        },
        "snapshot_time": {
          "description": "Latest snapshot timestamp in UTC.",
          "nullable": true,
          "type": "string"
        },
        "snapshot_time_iso": {
          "description": "Latest snapshot timestamp in ISO 8601 UTC.",
          "nullable": true,
          "type": "string"
        },
        "staleness_ms": {
          "description": "Milliseconds since the freshness basis timestamp.",
          "nullable": true,
          "type": "number"
        },
        "warnings": {
          "description": "Structured response warnings. Omitted when there are no warnings.",
          "items": {
            "properties": {
              "code": {
                "enum": [
                  "STALE_SNAPSHOT",
                  "UNRESOLVED_INSTRUMENT"
                ],
                "type": "string"
              },
              "message": {
                "type": "string"
              }
            },
            "required": [
              "code",
              "message"
            ],
            "type": "object"
          },
          "type": "array"
        }
      },
      "required": [
        "next_cursor"
      ],
      "type": "object"
    }
  },
  "required": [
    "data",
    "meta"
  ],
  "type": "object"
}
Example request
{
  "currency": "BTC",
  "end": "2026-07-23T12:00:00Z",
  "instrument_name": "BTC-USD",
  "instrument_name_raw": "BTC",
  "limit": 100,
  "market_type": "perp",
  "max_distance_from_mark": 10,
  "min_notional": 100000,
  "side": "B",
  "start": "2026-07-23T12:00:00Z",
  "wallet": "test"
}
Example response
{
  "data": [
    {}
  ],
  "meta": {
    "freshness_basis": "snapshot",
    "next_cursor": "test",
    "snapshot_interval_ms": 1,
    "snapshot_time": "test",
    "snapshot_time_iso": "test",
    "staleness_ms": 1,
    "warnings": [
      {
        "code": "STALE_SNAPSHOT",
        "message": "test"
      }
    ]
  }
}
GET/api/v1/hyperliquid/node/twap-events
$0.10 default
Description

Hyperliquid - HyperCore data. Pay per request

Documentation

HyperCore TWAP Events

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.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "currency": {
      "description": "Base currency (e.g. BTC, NVDA, BASED).",
      "example": "BTC",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name": {
      "description": "Normalized instrument name (e.g. BTC-USD, xyz:NVDA-USD, BASED_USDC).",
      "example": "BTC-USD",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name_raw": {
      "description": "Raw Hyperliquid node coin (e.g. BTC, xyz:NVDA, @305, #40).",
      "example": "BTC",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "market_type": {
      "description": "Hyperliquid node market type.",
      "enum": [
        "perp",
        "perp_hip3",
        "spot",
        "prediction"
      ],
      "example": "perp",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "min_target_notional": {
      "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.",
      "example": 1000000,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "side": {
      "description": "Order side.",
      "enum": [
        "B",
        "A"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "sort_dir": {
      "default": "DESC",
      "description": "Sort direction by event time. Defaults to DESC for node history endpoints.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "status": {
      "description": "TWAP status.",
      "example": "activated",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "twap_id": {
      "description": "TWAP ID.",
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "wallet": {
      "description": "Wallet address.",
      "example": "0x1234567890abcdef1234567890abcdef12345678",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [],
  "type": "object"
}
Request schema
{
  "properties": {
    "currency": {
      "description": "Base currency (e.g. BTC, NVDA, BASED).",
      "example": "BTC",
      "type": "string"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "type": "string"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "instrument_name": {
      "description": "Normalized instrument name (e.g. BTC-USD, xyz:NVDA-USD, BASED_USDC).",
      "example": "BTC-USD",
      "type": "string"
    },
    "instrument_name_raw": {
      "description": "Raw Hyperliquid node coin (e.g. BTC, xyz:NVDA, @305, #40).",
      "example": "BTC",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "market_type": {
      "description": "Hyperliquid node market type.",
      "enum": [
        "perp",
        "perp_hip3",
        "spot",
        "prediction"
      ],
      "example": "perp",
      "type": "string"
    },
    "min_target_notional": {
      "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.",
      "example": 1000000,
      "type": "number"
    },
    "side": {
      "description": "Order side.",
      "enum": [
        "B",
        "A"
      ],
      "type": "string"
    },
    "sort_dir": {
      "default": "DESC",
      "description": "Sort direction by event time. Defaults to DESC for node history endpoints.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "status": {
      "description": "TWAP status.",
      "example": "activated",
      "type": "string"
    },
    "twap_id": {
      "description": "TWAP ID.",
      "type": "number"
    },
    "wallet": {
      "description": "Wallet address.",
      "example": "0x1234567890abcdef1234567890abcdef12345678",
      "type": "string"
    }
  },
  "type": "object"
}
Response schema
{
  "properties": {
    "data": {
      "items": {
        "type": "object"
      },
      "type": "array"
    },
    "meta": {
      "properties": {
        "next_cursor": {
          "description": "Opaque pagination cursor. Pass this value as the cursor query parameter for the next page.",
          "nullable": true,
          "type": "string"
        },
        "warnings": {
          "description": "Structured response warnings. Omitted when there are no warnings.",
          "items": {
            "properties": {
              "code": {
                "enum": [
                  "STALE_SNAPSHOT",
                  "UNRESOLVED_INSTRUMENT"
                ],
                "type": "string"
              },
              "message": {
                "type": "string"
              }
            },
            "required": [
              "code",
              "message"
            ],
            "type": "object"
          },
          "type": "array"
        }
      },
      "required": [
        "next_cursor"
      ],
      "type": "object"
    }
  },
  "required": [
    "data",
    "meta"
  ],
  "type": "object"
}
Example request
{
  "currency": "BTC",
  "cursor": "test",
  "end": "2026-07-21T10:00:00.000Z",
  "instrument_name": "BTC-USD",
  "instrument_name_raw": "BTC",
  "limit": 100,
  "market_type": "perp",
  "min_target_notional": 1000000,
  "side": "B",
  "sort_dir": "DESC",
  "start": "2026-07-14T10:00:00.000Z",
  "status": "activated",
  "twap_id": 1,
  "wallet": "0x1234567890abcdef1234567890abcdef12345678"
}
Example response
{
  "data": [
    {}
  ],
  "meta": {
    "next_cursor": "test",
    "warnings": [
      {
        "code": "STALE_SNAPSHOT",
        "message": "test"
      }
    ]
  }
}
GET/api/v1/hyperliquid/node/wallet-flow
$0.10 default
Description

Hyperliquid - HyperCore data. Pay per request

Documentation

HyperCore Wallet Flow

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. Source table is the 1-minute materialized view from native fills. Time range caps by resolution: 1m=7d, 5m=14d, 15m=30d, 1h=90d, 4h=180d, 1d=365d.

At least one query parameter is required: wallet, instrument_name, instrument_name_raw, currency.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "currency": {
      "description": "Base currency (e.g. BTC, NVDA, BASED).",
      "example": "BTC",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name": {
      "description": "Normalized instrument name (e.g. BTC-USD, xyz:NVDA-USD, BASED_USDC).",
      "example": "BTC-USD",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name_raw": {
      "description": "Raw Hyperliquid node coin (e.g. BTC, xyz:NVDA, @305, #40).",
      "example": "BTC",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "market_type": {
      "description": "Hyperliquid node market type.",
      "enum": [
        "perp",
        "perp_hip3",
        "spot",
        "prediction"
      ],
      "example": "perp",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "min_notional": {
      "description": "Minimum total traded notional in USDC (buy_notional + sell_notional).",
      "example": 100000,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "resolution": {
      "default": "1m",
      "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.",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "sort_by": {
      "default": "time",
      "description": "Sort key for wallet flow rows. time preserves the historical time ordering; notional/PnL/count sorts rank wallets inside the selected window.",
      "enum": [
        "time",
        "total_notional",
        "buy_notional",
        "sell_notional",
        "net_notional",
        "realized_pnl",
        "trade_count"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "sort_dir": {
      "default": "DESC",
      "description": "Sort direction by event time. Defaults to DESC for node history endpoints.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "wallet": {
      "description": "Wallet address.",
      "example": "0x1234567890abcdef1234567890abcdef12345678",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [],
  "type": "object"
}
Request schema
{
  "anyOf": [
    {
      "required": [
        "wallet"
      ]
    },
    {
      "required": [
        "instrument_name"
      ]
    },
    {
      "required": [
        "instrument_name_raw"
      ]
    },
    {
      "required": [
        "currency"
      ]
    }
  ],
  "properties": {
    "currency": {
      "description": "Base currency (e.g. BTC, NVDA, BASED).",
      "example": "BTC",
      "type": "string"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "type": "string"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "instrument_name": {
      "description": "Normalized instrument name (e.g. BTC-USD, xyz:NVDA-USD, BASED_USDC).",
      "example": "BTC-USD",
      "type": "string"
    },
    "instrument_name_raw": {
      "description": "Raw Hyperliquid node coin (e.g. BTC, xyz:NVDA, @305, #40).",
      "example": "BTC",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "market_type": {
      "description": "Hyperliquid node market type.",
      "enum": [
        "perp",
        "perp_hip3",
        "spot",
        "prediction"
      ],
      "example": "perp",
      "type": "string"
    },
    "min_notional": {
      "description": "Minimum total traded notional in USDC (buy_notional + sell_notional).",
      "example": 100000,
      "type": "number"
    },
    "resolution": {
      "default": "1m",
      "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.",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "type": "string"
    },
    "sort_by": {
      "default": "time",
      "description": "Sort key for wallet flow rows. time preserves the historical time ordering; notional/PnL/count sorts rank wallets inside the selected window.",
      "enum": [
        "time",
        "total_notional",
        "buy_notional",
        "sell_notional",
        "net_notional",
        "realized_pnl",
        "trade_count"
      ],
      "type": "string"
    },
    "sort_dir": {
      "default": "DESC",
      "description": "Sort direction by event time. Defaults to DESC for node history endpoints.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "wallet": {
      "description": "Wallet address.",
      "example": "0x1234567890abcdef1234567890abcdef12345678",
      "type": "string"
    }
  },
  "type": "object"
}
Response schema
{
  "properties": {
    "data": {
      "items": {
        "type": "object"
      },
      "type": "array"
    },
    "meta": {
      "properties": {
        "next_cursor": {
          "description": "Opaque pagination cursor. Pass this value as the cursor query parameter for the next page.",
          "nullable": true,
          "type": "string"
        },
        "warnings": {
          "description": "Structured response warnings. Omitted when there are no warnings.",
          "items": {
            "properties": {
              "code": {
                "enum": [
                  "STALE_SNAPSHOT",
                  "UNRESOLVED_INSTRUMENT"
                ],
                "type": "string"
              },
              "message": {
                "type": "string"
              }
            },
            "required": [
              "code",
              "message"
            ],
            "type": "object"
          },
          "type": "array"
        }
      },
      "required": [
        "next_cursor"
      ],
      "type": "object"
    }
  },
  "required": [
    "data",
    "meta"
  ],
  "type": "object"
}
Example request
{
  "currency": "BTC",
  "cursor": "test",
  "end": "2026-07-21T10:00:00.000Z",
  "instrument_name": "BTC-USD",
  "instrument_name_raw": "BTC",
  "limit": 100,
  "market_type": "perp",
  "min_notional": 100000,
  "resolution": "1m",
  "sort_by": "time",
  "sort_dir": "DESC",
  "start": "2026-07-14T10:00:00.000Z",
  "wallet": "0x1234567890abcdef1234567890abcdef12345678"
}
Example response
{
  "data": [
    {}
  ],
  "meta": {
    "next_cursor": "test",
    "warnings": [
      {
        "code": "STALE_SNAPSHOT",
        "message": "test"
      }
    ]
  }
}
GET/api/v1/hyperliquid/node/wallet-positions
$0.10 default
Description

Hyperliquid - HyperCore data. Pay per request

Documentation

HyperCore Wallet Positions

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.

At least one query parameter is required: wallet, instrument_name, instrument_name_raw, currency.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "currency": {
      "description": "Base currency.",
      "example": "BTC",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "End date for last fill time filter.",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "include_zero": {
      "default": false,
      "description": "Include zero/flat positions.",
      "required": false,
      "type": "boolean",
      "x-parameter-location": "query"
    },
    "instrument_name": {
      "description": "Normalized instrument name.",
      "example": "BTC-USD",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name_raw": {
      "description": "Raw Hyperliquid node coin.",
      "example": "BTC",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of positions to return (1-1000).",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "market_type": {
      "description": "Market type.",
      "enum": [
        "perp",
        "perp_hip3",
        "spot",
        "prediction"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Start date for last fill time filter.",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "wallet": {
      "description": "Wallet address.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [],
  "type": "object"
}
Request schema
{
  "anyOf": [
    {
      "required": [
        "wallet"
      ]
    },
    {
      "required": [
        "instrument_name"
      ]
    },
    {
      "required": [
        "instrument_name_raw"
      ]
    },
    {
      "required": [
        "currency"
      ]
    }
  ],
  "properties": {
    "currency": {
      "description": "Base currency.",
      "example": "BTC",
      "type": "string"
    },
    "end": {
      "description": "End date for last fill time filter.",
      "format": "date-time",
      "type": "string"
    },
    "include_zero": {
      "default": false,
      "description": "Include zero/flat positions.",
      "type": "boolean"
    },
    "instrument_name": {
      "description": "Normalized instrument name.",
      "example": "BTC-USD",
      "type": "string"
    },
    "instrument_name_raw": {
      "description": "Raw Hyperliquid node coin.",
      "example": "BTC",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of positions to return (1-1000).",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "market_type": {
      "description": "Market type.",
      "enum": [
        "perp",
        "perp_hip3",
        "spot",
        "prediction"
      ],
      "type": "string"
    },
    "start": {
      "description": "Start date for last fill time filter.",
      "format": "date-time",
      "type": "string"
    },
    "wallet": {
      "description": "Wallet address.",
      "type": "string"
    }
  },
  "type": "object"
}
Response schema
{
  "properties": {
    "data": {
      "items": {
        "type": "object"
      },
      "type": "array"
    },
    "meta": {
      "properties": {
        "freshness_basis": {
          "description": "Basis used to compute staleness_ms.",
          "enum": [
            "ingestion_watermark"
          ],
          "type": "string"
        },
        "next_cursor": {
          "description": "Opaque pagination cursor. Pass this value as the cursor query parameter for the next page.",
          "nullable": true,
          "type": "string"
        },
        "staleness_ms": {
          "description": "Milliseconds since the freshness basis timestamp.",
          "nullable": true,
          "type": "number"
        },
        "warnings": {
          "description": "Structured response warnings. Omitted when there are no warnings.",
          "items": {
            "properties": {
              "code": {
                "enum": [
                  "STALE_SNAPSHOT",
                  "UNRESOLVED_INSTRUMENT"
                ],
                "type": "string"
              },
              "message": {
                "type": "string"
              }
            },
            "required": [
              "code",
              "message"
            ],
            "type": "object"
          },
          "type": "array"
        },
        "watermark_time": {
          "description": "Latest event ingestion watermark timestamp in UTC.",
          "nullable": true,
          "type": "string"
        },
        "watermark_time_iso": {
          "description": "Latest event ingestion watermark timestamp in ISO 8601 UTC.",
          "nullable": true,
          "type": "string"
        }
      },
      "required": [
        "next_cursor"
      ],
      "type": "object"
    }
  },
  "required": [
    "data",
    "meta"
  ],
  "type": "object"
}
Example request
{
  "currency": "BTC",
  "end": "2026-07-23T12:00:00Z",
  "include_zero": false,
  "instrument_name": "BTC-USD",
  "instrument_name_raw": "BTC",
  "limit": 100,
  "market_type": "perp",
  "start": "2026-07-23T12:00:00Z",
  "wallet": "test"
}
Example response
{
  "data": [
    {}
  ],
  "meta": {
    "freshness_basis": "ingestion_watermark",
    "next_cursor": "test",
    "staleness_ms": 1,
    "warnings": [
      {
        "code": "STALE_SNAPSHOT",
        "message": "test"
      }
    ],
    "watermark_time": "test",
    "watermark_time_iso": "test"
  }
}
GET/api/v1/instruments
$0.10 default
Description

Cross-market contract reference data — list endpoint. Pay per request.

Documentation

List Instruments

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.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "asset_class": {
      "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.).",
      "enum": [
        "crypto",
        "equity",
        "commodity",
        "forex",
        "index"
      ],
      "example": "equity",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "base_currency": {
      "description": "Filter by base currency (e.g., BTC, ETH, SOL)",
      "example": "BTC",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in next_cursor from the previous response.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "description": "Filter by exchange (e.g., deribit, binance, okx, bybit, hyperliquid, kraken, bullish, nado, coinbase)",
      "example": "deribit",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "expiry_from": {
      "description": "Filter instruments with expiry_date >= this value (ISO 8601 datetime)",
      "example": "2026-01-01T00:00:00Z",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "expiry_to": {
      "description": "Filter instruments with expiry_date <= this value (ISO 8601 datetime)",
      "example": "2026-12-31T23:59:59Z",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name": {
      "description": "Filter by instrument name (partial match, case-insensitive)",
      "example": "BTC",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "margin_type": {
      "description": "Filter by margin type: linear or inverse",
      "example": "linear",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "market_type": {
      "description": "Filter by market type",
      "enum": [
        "spot",
        "perpetual",
        "future",
        "option"
      ],
      "example": "perpetual",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "option_type": {
      "description": "Filter by option type: call or put",
      "example": "call",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "quote_currency": {
      "description": "Filter by quote currency (e.g., USD, USDT, USDC)",
      "example": "USD",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "status": {
      "default": "active",
      "description": "Filter by instrument status. Default 'active'. Pass 'all' to include all statuses.",
      "enum": [
        "active",
        "expired",
        "delisted",
        "suspended",
        "all"
      ],
      "example": "active",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "sub_exchange": {
      "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.).",
      "example": "xyz",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [],
  "type": "object"
}
Request schema
{
  "properties": {
    "asset_class": {
      "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.).",
      "enum": [
        "crypto",
        "equity",
        "commodity",
        "forex",
        "index"
      ],
      "example": "equity",
      "type": "string"
    },
    "base_currency": {
      "description": "Filter by base currency (e.g., BTC, ETH, SOL)",
      "example": "BTC",
      "type": "string"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in next_cursor from the previous response.",
      "type": "string"
    },
    "exchange": {
      "description": "Filter by exchange (e.g., deribit, binance, okx, bybit, hyperliquid, kraken, bullish, nado, coinbase)",
      "example": "deribit",
      "type": "string"
    },
    "expiry_from": {
      "description": "Filter instruments with expiry_date >= this value (ISO 8601 datetime)",
      "example": "2026-01-01T00:00:00Z",
      "type": "string"
    },
    "expiry_to": {
      "description": "Filter instruments with expiry_date <= this value (ISO 8601 datetime)",
      "example": "2026-12-31T23:59:59Z",
      "type": "string"
    },
    "instrument_name": {
      "description": "Filter by instrument name (partial match, case-insensitive)",
      "example": "BTC",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "margin_type": {
      "description": "Filter by margin type: linear or inverse",
      "example": "linear",
      "type": "string"
    },
    "market_type": {
      "description": "Filter by market type",
      "enum": [
        "spot",
        "perpetual",
        "future",
        "option"
      ],
      "example": "perpetual",
      "type": "string"
    },
    "option_type": {
      "description": "Filter by option type: call or put",
      "example": "call",
      "type": "string"
    },
    "quote_currency": {
      "description": "Filter by quote currency (e.g., USD, USDT, USDC)",
      "example": "USD",
      "type": "string"
    },
    "status": {
      "default": "active",
      "description": "Filter by instrument status. Default 'active'. Pass 'all' to include all statuses.",
      "enum": [
        "active",
        "expired",
        "delisted",
        "suspended",
        "all"
      ],
      "example": "active",
      "type": "string"
    },
    "sub_exchange": {
      "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.).",
      "example": "xyz",
      "type": "string"
    }
  },
  "type": "object"
}
Example request
{
  "asset_class": "equity",
  "base_currency": "BTC",
  "cursor": "test",
  "exchange": "deribit",
  "expiry_from": "2026-01-01T00:00:00Z",
  "expiry_to": "2026-12-31T23:59:59Z",
  "instrument_name": "BTC",
  "limit": 100,
  "margin_type": "linear",
  "market_type": "perpetual",
  "option_type": "call",
  "quote_currency": "USD",
  "status": "active",
  "sub_exchange": "xyz"
}
Example response
{
  "data": [
    {
      "asset_class": "crypto",
      "base_currency": "BTC",
      "contract_cycle": "",
      "contract_multiplier": 1,
      "contract_value": 10,
      "contract_value_currency": "USD",
      "created_at": "2020-01-01T00:00:00.000Z",
      "delivery_date": null,
      "exchange": "deribit",
      "exercise_style": "",
      "expiry_date": null,
      "funding_interval_hours": 8,
      "instrument_name": "BTC-PERPETUAL",
      "listing_date": "2020-01-01T00:00:00.000Z",
      "lot_size": 1,
      "margin_type": "inverse",
      "market_type": "perpetual",
      "max_leverage": 50,
      "max_position_notional": null,
      "min_order_size": 1,
      "option_type": "",
      "price_precision": 1,
      "quantity_precision": 0,
      "quote_currency": "USD",
      "settlement_currency": "BTC",
      "status": "active",
      "strike": null,
      "sub_exchange": "",
      "tick_size": 0.5,
      "underlying_index": "btc_usd",
      "updated_at": "2026-04-02T12:00:00.000Z"
    }
  ],
  "meta": {
    "count": 1,
    "next_cursor": "eyJvZmZzZXQiOjEwMH0=",
    "total": 15000
  }
}
GET/api/v1/instruments/detail
$0.10 default
Description

Cross-market contract reference data (tick size, lot size, leverage, expiry, …) — pay per request

Documentation

Instrument Detail

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.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance, okx)",
      "example": "deribit",
      "required": true,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name": {
      "description": "Full instrument name (e.g., BTC-PERPETUAL, BTCUSDT, BTC-24JUL26-68000-C)",
      "example": "BTC-PERPETUAL",
      "required": true,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [
    "exchange",
    "instrument_name"
  ],
  "type": "object"
}
Request schema
{
  "properties": {
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance, okx)",
      "example": "deribit",
      "type": "string"
    },
    "instrument_name": {
      "description": "Full instrument name (e.g., BTC-PERPETUAL, BTCUSDT, BTC-24JUL26-68000-C)",
      "example": "BTC-PERPETUAL",
      "type": "string"
    }
  },
  "required": [
    "exchange",
    "instrument_name"
  ],
  "type": "object"
}
Example request
{
  "exchange": "deribit",
  "instrument_name": "BTC-PERPETUAL"
}
Example response
{
  "data": {
    "asset_class": "crypto",
    "base_currency": "BTC",
    "contract_cycle": "",
    "contract_multiplier": 1,
    "contract_value": 10,
    "contract_value_currency": "USD",
    "created_at": "2020-01-01T00:00:00.000Z",
    "delivery_date": null,
    "exchange": "deribit",
    "exercise_style": "",
    "expiry_date": null,
    "funding_interval_hours": 8,
    "instrument_name": "BTC-PERPETUAL",
    "listing_date": "2020-01-01T00:00:00.000Z",
    "lot_size": 1,
    "margin_type": "inverse",
    "market_type": "perpetual",
    "max_leverage": 50,
    "max_position_notional": null,
    "min_order_size": 1,
    "option_type": "",
    "price_precision": 1,
    "quantity_precision": 0,
    "quote_currency": "USD",
    "raw_data": "{\"instrument_name\":\"BTC-PERPETUAL\",\"kind\":\"future\",...}",
    "settlement_currency": "BTC",
    "status": "active",
    "strike": null,
    "sub_exchange": "",
    "tick_size": 0.5,
    "underlying_index": "btc_usd",
    "updated_at": "2026-04-02T12:00:00.000Z"
  },
  "meta": {}
}
GET/api/v1/macro/asset-classes
$0.10 default
Description

Discovery for non-crypto perpetuals — equity (NVDA, TSLA, MSTR, …), commodity (GOLD, OIL, SILVER, …), forex (EURUSD, GBPUSD, …), and index. Pay per request

Documentation

Macro Asset Classes

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.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

GET/api/v1/macro/catalog
$0.10 default
Description

Discovery for non-crypto perpetuals — equity (NVDA, TSLA, MSTR, …), commodity (GOLD, OIL, SILVER, …), forex (EURUSD, GBPUSD, …), and index. Pay per request

Documentation

Macro Catalog

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, …).

Once 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:

| Data | Route |
|---|---|
| OHLCVT candles (open/high/low/close/volume/trades) | GET /api/v1/perpetuals/ohlcvt |
| Ticker history (mark/index/bid/ask/OI/spread) | GET /api/v1/perpetuals/ticker-history |
| **Funding rate, basis, annualized carry** | GET /api/v1/perpetuals/carry |
| Open interest history | GET /api/v1/perpetuals/open-interest |
| Volume aggregates | GET /api/v1/perpetuals/volume |
| L1 book (best bid/ask) | GET /api/v1/perpetuals/level1 |
| L2 orderbook (depth) | GET /api/v1/perpetuals/orderbook |
| Liquidations | GET /api/v1/perpetuals/liquidations |
| Snapshot (latest tick across all instruments) | GET /api/v1/perpetuals/snapshot |
| Reference price | GET /api/v1/perpetuals/reference-price |
| Individual trades (sparse on most macro venues) | GET /api/v1/perpetuals/trades |

Note: 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.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "asset_class": {
      "description": "Restrict to a single asset class. Defaults to all non-crypto (equity, commodity, forex, index).",
      "enum": [
        "equity",
        "commodity",
        "forex",
        "index",
        "crypto"
      ],
      "example": "equity",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "base_currency": {
      "description": "Filter by base currency / underlying ticker (NVDA, TSLA, GOLD, EUR, ...)",
      "example": "NVDA",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "cursor": {
      "description": "Pagination cursor from a previous response.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "description": "Filter by exchange (binance, bybit, hyperliquid, kraken, okx, nado).",
      "example": "hyperliquid",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name": {
      "description": "Partial, case-insensitive instrument-name match (e.g. \"NVDA\" finds xyz:NVDA-USD and PF_NVDAXUSD).",
      "example": "NVDA",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Records per page (1-1000)",
      "example": 100,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "market_type": {
      "default": "perpetual",
      "description": "Restrict to one market_type. Defaults to perpetual (the dominant macro segment).",
      "enum": [
        "perpetual",
        "future",
        "spot"
      ],
      "example": "perpetual",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "status": {
      "default": "active",
      "description": "Instrument status. Default \"active\". Pass \"all\" to include expired/delisted/suspended.",
      "enum": [
        "active",
        "expired",
        "delisted",
        "suspended",
        "all"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "sub_exchange": {
      "description": "Hyperliquid HIP-3 sub-venue: xyz, flx, km, cash, vntl, hyna. Empty string matches single-venue exchanges.",
      "example": "xyz",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [],
  "type": "object"
}
Request schema
{
  "properties": {
    "asset_class": {
      "description": "Restrict to a single asset class. Defaults to all non-crypto (equity, commodity, forex, index).",
      "enum": [
        "equity",
        "commodity",
        "forex",
        "index",
        "crypto"
      ],
      "example": "equity",
      "type": "string"
    },
    "base_currency": {
      "description": "Filter by base currency / underlying ticker (NVDA, TSLA, GOLD, EUR, ...)",
      "example": "NVDA",
      "type": "string"
    },
    "cursor": {
      "description": "Pagination cursor from a previous response.",
      "type": "string"
    },
    "exchange": {
      "description": "Filter by exchange (binance, bybit, hyperliquid, kraken, okx, nado).",
      "example": "hyperliquid",
      "type": "string"
    },
    "instrument_name": {
      "description": "Partial, case-insensitive instrument-name match (e.g. \"NVDA\" finds xyz:NVDA-USD and PF_NVDAXUSD).",
      "example": "NVDA",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Records per page (1-1000)",
      "example": 100,
      "type": "number"
    },
    "market_type": {
      "default": "perpetual",
      "description": "Restrict to one market_type. Defaults to perpetual (the dominant macro segment).",
      "enum": [
        "perpetual",
        "future",
        "spot"
      ],
      "example": "perpetual",
      "type": "string"
    },
    "status": {
      "default": "active",
      "description": "Instrument status. Default \"active\". Pass \"all\" to include expired/delisted/suspended.",
      "enum": [
        "active",
        "expired",
        "delisted",
        "suspended",
        "all"
      ],
      "type": "string"
    },
    "sub_exchange": {
      "description": "Hyperliquid HIP-3 sub-venue: xyz, flx, km, cash, vntl, hyna. Empty string matches single-venue exchanges.",
      "example": "xyz",
      "type": "string"
    }
  },
  "type": "object"
}
Example request
{
  "asset_class": "equity",
  "base_currency": "NVDA",
  "cursor": "test",
  "exchange": "hyperliquid",
  "instrument_name": "NVDA",
  "limit": 100,
  "market_type": "perpetual",
  "status": "active",
  "sub_exchange": "xyz"
}
GET/api/v1/macro/summary
$0.10 default
Description

Discovery for non-crypto perpetuals — equity (NVDA, TSLA, MSTR, …), commodity (GOLD, OIL, SILVER, …), forex (EURUSD, GBPUSD, …), and index. Pay per request

Documentation

Macro 24h Summary

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.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "asset_class": {
      "description": "Restrict to a single asset class. Defaults to all non-crypto.",
      "enum": [
        "equity",
        "commodity",
        "forex",
        "index"
      ],
      "example": "equity",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "market_type": {
      "default": "perpetual",
      "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).",
      "enum": [
        "perpetual",
        "future"
      ],
      "example": "perpetual",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "top": {
      "default": 10,
      "description": "Top-N per asset class (1-50).",
      "example": 10,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    }
  },
  "required": [],
  "type": "object"
}
Request schema
{
  "properties": {
    "asset_class": {
      "description": "Restrict to a single asset class. Defaults to all non-crypto.",
      "enum": [
        "equity",
        "commodity",
        "forex",
        "index"
      ],
      "example": "equity",
      "type": "string"
    },
    "market_type": {
      "default": "perpetual",
      "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).",
      "enum": [
        "perpetual",
        "future"
      ],
      "example": "perpetual",
      "type": "string"
    },
    "top": {
      "default": 10,
      "description": "Top-N per asset class (1-50).",
      "example": 10,
      "type": "number"
    }
  },
  "type": "object"
}
Example request
{
  "asset_class": "equity",
  "market_type": "perpetual",
  "top": 10
}
GET/api/v1/macro/venues
$0.10 default
Description

Discovery for non-crypto perpetuals — equity (NVDA, TSLA, MSTR, …), commodity (GOLD, OIL, SILVER, …), forex (EURUSD, GBPUSD, …), and index. Pay per request

Documentation

Macro Venues

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.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "asset_class": {
      "description": "Restrict to a single asset class. Defaults to all non-crypto.",
      "enum": [
        "equity",
        "commodity",
        "forex",
        "index"
      ],
      "example": "equity",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "market_type": {
      "description": "Restrict to a single market type. Omit to get a row per (exchange, sub_exchange, market_type) tuple.",
      "enum": [
        "perpetual",
        "future",
        "spot"
      ],
      "example": "perpetual",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [],
  "type": "object"
}
Request schema
{
  "properties": {
    "asset_class": {
      "description": "Restrict to a single asset class. Defaults to all non-crypto.",
      "enum": [
        "equity",
        "commodity",
        "forex",
        "index"
      ],
      "example": "equity",
      "type": "string"
    },
    "market_type": {
      "description": "Restrict to a single market type. Omit to get a row per (exchange, sub_exchange, market_type) tuple.",
      "enum": [
        "perpetual",
        "future",
        "spot"
      ],
      "example": "perpetual",
      "type": "string"
    }
  },
  "type": "object"
}
Example request
{
  "asset_class": "equity",
  "market_type": "perpetual"
}
GET/api/v1/options/catalog
$0.10 default
Description

Options data — pay per request

Documentation

Options Catalog

Returns a list of available options instruments.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "currency": {
      "description": "Filter by base currency (e.g., BTC, ETH, SOL)",
      "example": "BTC",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "cursor": {
      "description": "Pagination cursor from a previous response",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "description": "Filter by exchange (e.g., deribit, binance, okx, bybit, hyperliquid)",
      "example": "deribit",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of instruments to return (1-1000)",
      "example": 100,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "maturity": {
      "description": "Filter by maturity/expiry date (e.g., 25DEC26, 27JUN25)",
      "example": "25DEC26",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "option_type": {
      "description": "Filter by option type: C (Call) or P (Put)",
      "enum": [
        "C",
        "P"
      ],
      "example": "C",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "strike_max": {
      "description": "Maximum strike price",
      "example": 100000,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "strike_min": {
      "description": "Minimum strike price",
      "example": 50000,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    }
  },
  "required": [],
  "type": "object"
}
Request schema
{
  "properties": {
    "currency": {
      "description": "Filter by base currency (e.g., BTC, ETH, SOL)",
      "example": "BTC",
      "type": "string"
    },
    "cursor": {
      "description": "Pagination cursor from a previous response",
      "type": "string"
    },
    "exchange": {
      "description": "Filter by exchange (e.g., deribit, binance, okx, bybit, hyperliquid)",
      "example": "deribit",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of instruments to return (1-1000)",
      "example": 100,
      "type": "number"
    },
    "maturity": {
      "description": "Filter by maturity/expiry date (e.g., 25DEC26, 27JUN25)",
      "example": "25DEC26",
      "type": "string"
    },
    "option_type": {
      "description": "Filter by option type: C (Call) or P (Put)",
      "enum": [
        "C",
        "P"
      ],
      "example": "C",
      "type": "string"
    },
    "strike_max": {
      "description": "Maximum strike price",
      "example": 100000,
      "type": "number"
    },
    "strike_min": {
      "description": "Minimum strike price",
      "example": 50000,
      "type": "number"
    }
  },
  "type": "object"
}
Example request
{
  "currency": "BTC",
  "cursor": "test",
  "exchange": "deribit",
  "limit": 100,
  "maturity": "25DEC26",
  "option_type": "C",
  "strike_max": 100000,
  "strike_min": 50000
}
Example response
[
  {
    "exchange": "deribit",
    "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"
  }
]
GET/api/v1/options/flow
$0.10 default
Description

Options data — pay per request

Documentation

Options Flow Summary

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.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "currency": {
      "description": "Base currency (e.g. BTC, ETH). Required.",
      "example": "BTC",
      "required": true,
      "type": "string",
      "x-parameter-location": "query"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit)",
      "example": "deribit",
      "required": true,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "min_premium_usd": {
      "description": "Minimum premium_usd per trade to include in aggregation. Filters dust before aggregating.",
      "example": 1000,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "resolution": {
      "default": "1h",
      "description": "Time bucket resolution for aggregation.",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "top_n": {
      "default": 10,
      "description": "Number of notable trades to return (most_active_strikes always returns top 10). Default 10.",
      "example": 10,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    }
  },
  "required": [
    "exchange",
    "currency"
  ],
  "type": "object"
}
Request schema
{
  "properties": {
    "currency": {
      "description": "Base currency (e.g. BTC, ETH). Required.",
      "example": "BTC",
      "type": "string"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "type": "string"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit)",
      "example": "deribit",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "min_premium_usd": {
      "description": "Minimum premium_usd per trade to include in aggregation. Filters dust before aggregating.",
      "example": 1000,
      "type": "number"
    },
    "resolution": {
      "default": "1h",
      "description": "Time bucket resolution for aggregation.",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "type": "string"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "top_n": {
      "default": 10,
      "description": "Number of notable trades to return (most_active_strikes always returns top 10). Default 10.",
      "example": 10,
      "type": "number"
    }
  },
  "required": [
    "exchange",
    "currency"
  ],
  "type": "object"
}
Response schema
{
  "properties": {
    "buckets": {
      "items": {
        "properties": {
          "avg_abs_delta": {
            "description": "Average absolute delta",
            "nullable": true,
            "type": "object"
          },
          "avg_iv": {
            "description": "Average implied volatility",
            "nullable": true,
            "type": "object"
          },
          "block_premium_usd": {
            "description": "Block trade premium in USD",
            "type": "number"
          },
          "block_trade_count": {
            "description": "Number of block trades",
            "type": "number"
          },
          "buy_amount": {
            "description": "Buy side amount (contracts)",
            "type": "number"
          },
          "buy_count": {
            "description": "Number of buy trades",
            "type": "number"
          },
          "buy_notional": {
            "description": "Buy side notional in USD",
            "type": "number"
          },
          "buy_premium_usd": {
            "description": "Buy side premium in USD",
            "type": "number"
          },
          "call_count": {
            "description": "Number of call option trades",
            "type": "number"
          },
          "call_premium_usd": {
            "description": "Call option premium in USD",
            "type": "number"
          },
          "date": {
            "description": "Date in ISO 8601 format (UTC)",
            "example": "2024-12-10T00:00:00.000Z",
            "format": "date-time",
            "type": "string"
          },
          "net_oi_change": {
            "description": "Net open interest change",
            "type": "number"
          },
          "put_count": {
            "description": "Number of put option trades",
            "type": "number"
          },
          "put_premium_usd": {
            "description": "Put option premium in USD",
            "type": "number"
          },
          "sell_amount": {
            "description": "Sell side amount (contracts)",
            "type": "number"
          },
          "sell_count": {
            "description": "Number of sell trades",
            "type": "number"
          },
          "sell_notional": {
            "description": "Sell side notional in USD",
            "type": "number"
          },
          "sell_premium_usd": {
            "description": "Sell side premium in USD",
            "type": "number"
          },
          "total_amount": {
            "description": "Total trade amount (contracts)",
            "type": "number"
          },
          "total_notional": {
            "description": "Total notional in USD",
            "type": "number"
          },
          "total_premium_usd": {
            "description": "Total premium in USD",
            "type": "number"
          },
          "trade_count": {
            "description": "Total number of trades in bucket",
            "type": "number"
          }
        },
        "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"
        ],
        "type": "object",
        "x-openapi-ref": "#/components/schemas/OptionsFlowBucketEntity"
      },
      "type": "array"
    },
    "notable_trades": {
      "items": {
        "properties": {
          "amount": {
            "description": "Trade amount/size",
            "example": 1.5,
            "type": "number"
          },
          "block_trade_id": {
            "description": "Block trade identifier if applicable",
            "example": "block_123",
            "type": "string"
          },
          "combo_id": {
            "description": "Combo trade identifier if applicable",
            "example": "combo_123",
            "type": "string"
          },
          "combo_trade_id": {
            "description": "Combo trade ID if part of combo",
            "example": "combo_trade_123",
            "type": "string"
          },
          "date": {
            "description": "ISO 8601 formatted date string",
            "example": "2023-06-15T14:30:00.000Z",
            "type": "string"
          },
          "direction": {
            "description": "Trade direction",
            "enum": [
              "buy",
              "sell"
            ],
            "example": "buy",
            "type": "string"
          },
          "index_price": {
            "description": "Index price at time of trade",
            "example": 45010,
            "nullable": true,
            "type": "object"
          },
          "instrument_name": {
            "description": "Instrument identifier",
            "example": "BTC-25DEC26",
            "type": "string"
          },
          "oi_before": {
            "description": "Open interest before trade",
            "example": 9900,
            "nullable": true,
            "type": "object"
          },
          "oi_change": {
            "description": "Change in open interest",
            "example": 100,
            "nullable": true,
            "type": "object"
          },
          "open_interest": {
            "description": "Open interest after trade",
            "example": 10000,
            "nullable": true,
            "type": "object"
          },
          "price": {
            "description": "Trade execution price",
            "example": 45000.5,
            "type": "number"
          },
          "strategy": {
            "description": "Trading strategy identifier",
            "example": "strategy_1",
            "type": "string"
          },
          "tick_direction": {
            "description": "Tick direction indicator",
            "example": 1,
            "nullable": true,
            "type": "object"
          },
          "timestamp": {
            "description": "Unix timestamp in milliseconds",
            "example": 1234567890123,
            "type": "number"
          },
          "trade_id": {
            "description": "Unique trade identifier",
            "example": "trade_123456",
            "type": "string"
          }
        },
        "required": [
          "instrument_name",
          "timestamp",
          "date",
          "trade_id",
          "direction",
          "amount",
          "price"
        ],
        "type": "object",
        "x-openapi-ref": "#/components/schemas/OptionsTradeEntity"
      },
      "type": "array"
    },
    "summary": {
      "properties": {
        "block_trade_count": {
          "description": "Number of block trades",
          "type": "number"
        },
        "block_trade_premium_usd": {
          "description": "Block trade premium in USD",
          "type": "number"
        },
        "buy_premium_usd": {
          "description": "Total premium for buy-side trades in USD",
          "type": "number"
        },
        "call_premium_usd": {
          "description": "Total premium for call options in USD",
          "type": "number"
        },
        "closing_trades": {
          "description": "Number of closing trades (strategy starts with Closed)",
          "type": "number"
        },
        "end": {
          "description": "End of aggregation window (ISO 8601 UTC)",
          "example": "2026-03-18T10:00:00.000Z",
          "type": "string"
        },
        "most_active_strikes": {
          "description": "Most active instruments by premium",
          "items": {
            "properties": {
              "instrument_name": {
                "description": "Instrument name",
                "type": "string"
              },
              "net_oi_change": {
                "description": "Net open interest change",
                "type": "number"
              },
              "premium_usd": {
                "description": "Total premium in USD",
                "type": "number"
              },
              "trade_count": {
                "description": "Number of trades on this instrument",
                "type": "number"
              }
            },
            "required": [
              "instrument_name",
              "trade_count",
              "premium_usd",
              "net_oi_change"
            ],
            "type": "object",
            "x-openapi-ref": "#/components/schemas/OptionsFlowActiveStrikeEntity"
          },
          "type": "array"
        },
        "net_delta": {
          "description": "Net delta across all trades",
          "type": "number"
        },
        "net_gamma": {
          "description": "Net gamma across all trades",
          "type": "number"
        },
        "net_oi_change": {
          "description": "Net open interest change",
          "type": "number"
        },
        "net_vega": {
          "description": "Net vega across all trades",
          "type": "number"
        },
        "opening_trades": {
          "description": "Number of opening trades (strategy starts with Opened)",
          "type": "number"
        },
        "put_premium_usd": {
          "description": "Total premium for put options in USD",
          "type": "number"
        },
        "resolution": {
          "description": "Resolution used for time buckets",
          "example": "1h",
          "type": "string"
        },
        "sell_premium_usd": {
          "description": "Total premium for sell-side trades in USD",
          "type": "number"
        },
        "start": {
          "description": "Start of aggregation window (ISO 8601 UTC)",
          "example": "2026-03-11T10:00:00.000Z",
          "type": "string"
        },
        "total_notional_usd": {
          "description": "Total notional across all trades in USD",
          "type": "number"
        },
        "total_premium_usd": {
          "description": "Total premium across all trades in USD",
          "type": "number"
        },
        "total_trades": {
          "description": "Total number of trades in window",
          "type": "number"
        }
      },
      "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"
      ],
      "type": "object",
      "x-openapi-ref": "#/components/schemas/OptionsFlowSummaryEntity"
    }
  }
}
Example request
{
  "currency": "BTC",
  "cursor": "test",
  "end": "2026-07-21T10:00:00.000Z",
  "exchange": "deribit",
  "limit": 100,
  "min_premium_usd": 1000,
  "resolution": "1h",
  "sort_dir": "ASC",
  "start": "2026-07-14T10:00:00.000Z",
  "top_n": 10
}
Example response
{
  "buckets": [
    {
      "avg_abs_delta": 0.45,
      "avg_iv": 52.34,
      "block_premium_usd": 1520200.4,
      "block_trade_count": 8,
      "buy_amount": 680.2,
      "buy_count": 78,
      "buy_notional": 46120050.3,
      "buy_premium_usd": 1320150.22,
      "call_count": 82,
      "call_premium_usd": 1420180.3,
      "date": "2026-03-11T10:00:00.000Z",
      "net_oi_change": 320.5,
      "put_count": 60,
      "put_premium_usd": 1030132.15,
      "sell_amount": 570.3,
      "sell_count": 64,
      "sell_notional": 39110050.2,
      "sell_premium_usd": 1130162.23,
      "total_amount": 1250.5,
      "total_notional": 85230100.5,
      "total_premium_usd": 2450312.45,
      "trade_count": 142
    },
    {
      "avg_abs_delta": 0.43,
      "avg_iv": 51.87,
      "block_premium_usd": 980130.2,
      "block_trade_count": 5,
      "buy_amount": 470.1,
      "buy_count": 52,
      "buy_notional": 33080040.1,
      "buy_premium_usd": 950130.45,
      "call_count": 55,
      "call_premium_usd": 1020140.2,
      "date": "2026-03-11T11:00:00.000Z",
      "net_oi_change": 180.2,
      "put_count": 43,
      "put_premium_usd": 760104.92,
      "sell_amount": 420.2,
      "sell_count": 46,
      "sell_notional": 29070040.2,
      "sell_premium_usd": 830114.67,
      "total_amount": 890.3,
      "total_notional": 62150080.3,
      "total_premium_usd": 1780245.12,
      "trade_count": 98
    }
  ],
  "notable_trades": [
    {
      "amount": 50,
      "block_trade_id": "BLK-12345",
      "combo_id": "",
      "currency": "BTC",
      "date": "2026-03-11 14:30:00",
      "days_to_expiry": 107.4,
      "delta": -0.3512,
      "direction": "buy",
      "gamma": 8e-6,
      "index_price": 84500.12,
      "instrument_name": "BTC-26JUN26-95000-P",
      "iv": 58.2,
      "mark_price": 0.031,
      "maturity": "26JUN26",
      "notional": 4225006,
      "oi_change": 50,
      "open_interest": 250,
      "option_type": "P",
      "premium_usd": 8027375.24,
      "price": 0.0312,
      "strategy": "Opened LONG_PUT",
      "strike": 95000,
      "theta": -18.42,
      "timestamp": 1773269099057,
      "trade_id": "412345678",
      "vega": 142.35
    }
  ],
  "summary": {
    "block_trade_count": 1223,
    "block_trade_premium_usd": 190954915.46,
    "buy_premium_usd": 166205839.48,
    "call_premium_usd": 178403755.18,
    "closing_trades": 887,
    "end": "2026-03-18T10:00:00.000Z",
    "most_active_strikes": [
      {
        "instrument_name": "BTC-25SEP26-70000-C",
        "net_oi_change": 913.8,
        "premium_usd": 14778377.67,
        "trade_count": 78
      },
      {
        "instrument_name": "BTC-25SEP26-70000-P",
        "net_oi_change": 862.4,
        "premium_usd": 8580802.91,
        "trade_count": 27
      },
      {
        "instrument_name": "BTC-26JUN26-95000-P",
        "net_oi_change": 0,
        "premium_usd": 8027375.24,
        "trade_count": 3
      }
    ],
    "net_delta": 2409.04,
    "net_gamma": 0.24,
    "net_oi_change": 46885.23,
    "net_vega": 413362.73,
    "opening_trades": 3144,
    "put_premium_usd": 134686420.48,
    "resolution": "1h",
    "sell_premium_usd": 146884336.18,
    "start": "2026-03-11T10:00:00.000Z",
    "total_notional_usd": 10663319458.94,
    "total_premium_usd": 313090175.66,
    "total_trades": 17473
  }
}
GET/api/v1/options/gex/catalog
$0.10 default
Description

Options data — pay per request

Documentation

Options Dealer GEX Catalog

Lists currencies and venues available in the durable dealer GEX ClickHouse tables, including history depth and latest aggregate state.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "currency": {
      "description": "Dealer-worker currency. Examples: BTC, ETH, SOL, XRP, BTC_USDC, ETH_USDC.",
      "example": "BTC",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "default": "deribit",
      "description": "Options venue. Dealer GEX is currently backed by Deribit options.",
      "enum": [
        "deribit"
      ],
      "example": "deribit",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of currency/venue rows to return.",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    }
  },
  "required": [],
  "type": "object"
}
Request schema
{
  "properties": {
    "currency": {
      "description": "Dealer-worker currency. Examples: BTC, ETH, SOL, XRP, BTC_USDC, ETH_USDC.",
      "example": "BTC",
      "type": "string"
    },
    "exchange": {
      "default": "deribit",
      "description": "Options venue. Dealer GEX is currently backed by Deribit options.",
      "enum": [
        "deribit"
      ],
      "example": "deribit",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of currency/venue rows to return.",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    }
  },
  "type": "object"
}
Response schema
{
  "allOf": [
    {
      "properties": {
        "data": {
          "items": {
            "type": "array"
          },
          "type": "array"
        },
        "meta": {
          "properties": {
            "next_cursor": {
              "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,
              "type": "string"
            }
          },
          "required": [
            "next_cursor"
          ],
          "type": "object",
          "x-openapi-ref": "#/components/schemas/PaginationMetaEntity"
        }
      },
      "required": [
        "data",
        "meta"
      ],
      "type": "object",
      "x-openapi-ref": "#/components/schemas/PaginatedResponse"
    },
    {
      "properties": {
        "data": {
          "items": {
            "properties": {
              "currency": {
                "description": "Dealer-worker currency",
                "example": "BTC",
                "type": "string"
              },
              "exchange": {
                "description": "Venue name resolved from dealer market id",
                "example": "deribit",
                "type": "string"
              },
              "first_date": {
                "description": "Earliest available aggregate GEX timestamp",
                "example": "2025-10-04T00:00:00.000Z",
                "type": "string"
              },
              "latest_date": {
                "description": "Latest available aggregate GEX timestamp",
                "example": "2026-06-15T10:06:00.000Z",
                "type": "string"
              },
              "market": {
                "description": "Dealer market id. 0 maps to Deribit.",
                "example": 0,
                "type": "number"
              },
              "net_long_gex": {
                "description": "Latest positive dealer GEX contribution",
                "example": 19984373.25,
                "type": "number"
              },
              "net_short_gex": {
                "description": "Latest negative dealer GEX contribution",
                "example": -24527141.33,
                "type": "number"
              },
              "regime": {
                "description": "Latest dealer regime classification",
                "example": "neutral",
                "type": "string"
              },
              "row_count": {
                "description": "Number of aggregate GEX rows available for this currency/venue",
                "example": 318224,
                "type": "number"
              },
              "spot": {
                "description": "Latest spot price used for the GEX calculation",
                "example": 65651.87,
                "type": "number"
              },
              "total_gex": {
                "description": "Latest total dealer gamma exposure per 1% underlying move",
                "example": -4542768.08,
                "type": "number"
              }
            },
            "required": [
              "currency",
              "exchange",
              "market",
              "first_date",
              "latest_date",
              "row_count",
              "spot",
              "total_gex",
              "net_long_gex",
              "net_short_gex",
              "regime"
            ],
            "type": "object",
            "x-openapi-ref": "#/components/schemas/OptionsGexCatalogEntity"
          },
          "type": "array"
        },
        "meta": {
          "properties": {
            "next_cursor": {
              "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,
              "type": "string"
            }
          },
          "required": [
            "next_cursor"
          ],
          "type": "object",
          "x-openapi-ref": "#/components/schemas/PaginationMetaEntity"
        }
      }
    }
  ]
}
Example request
{
  "currency": "BTC",
  "exchange": "deribit",
  "limit": 100
}
Example response
{
  "data": [
    {
      "currency": "BTC",
      "exchange": "deribit",
      "first_date": "2025-10-04T00:00:00.000Z",
      "latest_date": "2026-06-15T10:06:00.000Z",
      "market": 0,
      "net_long_gex": 19984373.25,
      "net_short_gex": -24527141.33,
      "regime": "neutral",
      "row_count": 318224,
      "spot": 65651.87,
      "total_gex": -4542768.08
    }
  ],
  "meta": {
    "next_cursor": null
  }
}
GET/api/v1/options/gex/history
$0.10 default
Description

Options data — pay per request

Documentation

Historical Options Dealer GEX

Returns aggregate dealer GEX history from ClickHouse gex_index for one currency/venue. Supports 1m, 5m, 15m, 1h, 4h, and 1d bucketing with cursor pagination via meta.next_cursor.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "currency": {
      "description": "Dealer-worker currency. Examples: BTC, ETH, SOL, XRP, BTC_USDC, ETH_USDC.",
      "example": "BTC",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "default": "deribit",
      "description": "Options venue. Dealer GEX is currently backed by Deribit options.",
      "enum": [
        "deribit"
      ],
      "example": "deribit",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for bucketing results",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [],
  "type": "object"
}
Request schema
{
  "properties": {
    "currency": {
      "description": "Dealer-worker currency. Examples: BTC, ETH, SOL, XRP, BTC_USDC, ETH_USDC.",
      "example": "BTC",
      "type": "string"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "type": "string"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "exchange": {
      "default": "deribit",
      "description": "Options venue. Dealer GEX is currently backed by Deribit options.",
      "enum": [
        "deribit"
      ],
      "example": "deribit",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for bucketing results",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "type": "string"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    }
  },
  "type": "object"
}
Response schema
{
  "allOf": [
    {
      "properties": {
        "data": {
          "items": {
            "type": "array"
          },
          "type": "array"
        },
        "meta": {
          "properties": {
            "next_cursor": {
              "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,
              "type": "string"
            }
          },
          "required": [
            "next_cursor"
          ],
          "type": "object",
          "x-openapi-ref": "#/components/schemas/PaginationMetaEntity"
        }
      },
      "required": [
        "data",
        "meta"
      ],
      "type": "object",
      "x-openapi-ref": "#/components/schemas/PaginatedResponse"
    },
    {
      "properties": {
        "data": {
          "items": {
            "properties": {
              "currency": {
                "description": "Dealer-worker currency",
                "example": "BTC",
                "type": "string"
              },
              "date": {
                "description": "Date in ISO 8601 format (UTC)",
                "example": "2024-12-10T00:00:00.000Z",
                "format": "date-time",
                "type": "string"
              },
              "exchange": {
                "description": "Venue name resolved from dealer market id",
                "example": "deribit",
                "type": "string"
              },
              "market": {
                "description": "Dealer market id. 0 maps to Deribit.",
                "example": 0,
                "type": "number"
              },
              "net_long_gex": {
                "description": "Positive dealer GEX contribution",
                "example": 19984373.25,
                "type": "number"
              },
              "net_short_gex": {
                "description": "Negative dealer GEX contribution",
                "example": -24527141.33,
                "type": "number"
              },
              "regime": {
                "description": "Dealer regime classification",
                "example": "neutral",
                "type": "string"
              },
              "spot": {
                "description": "Spot price used for the GEX calculation",
                "example": 65651.87,
                "type": "number"
              },
              "total_gex": {
                "description": "Total dealer gamma exposure per 1% underlying move, USD-normalized",
                "example": -4542768.08,
                "type": "number"
              }
            },
            "required": [
              "date",
              "currency",
              "exchange",
              "market",
              "spot",
              "total_gex",
              "net_long_gex",
              "net_short_gex",
              "regime"
            ],
            "type": "object",
            "x-openapi-ref": "#/components/schemas/OptionsGexIndexEntity"
          },
          "type": "array"
        },
        "meta": {
          "properties": {
            "next_cursor": {
              "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,
              "type": "string"
            }
          },
          "required": [
            "next_cursor"
          ],
          "type": "object",
          "x-openapi-ref": "#/components/schemas/PaginationMetaEntity"
        }
      }
    }
  ]
}
Example request
{
  "currency": "BTC",
  "cursor": "test",
  "end": "2026-07-21T10:00:00.000Z",
  "exchange": "deribit",
  "limit": 100,
  "resolution": "1m",
  "sort_dir": "ASC",
  "start": "2026-07-14T10:00:00.000Z"
}
Example response
{
  "data": [
    {
      "currency": "BTC",
      "date": "2026-06-15T10:00:00.000Z",
      "exchange": "deribit",
      "market": 0,
      "net_long_gex": 20100000,
      "net_short_gex": -24220000,
      "regime": "neutral",
      "spot": 65590.12,
      "total_gex": -4120000
    }
  ],
  "meta": {
    "next_cursor": "eyJtaW51dGUiOiIyMDI2LTA2LTE1IDEwOjAwOjAwIn0="
  }
}
GET/api/v1/options/gex/latest
$0.10 default
Description

Options data — pay per request

Documentation

Latest Options Dealer GEX

Returns the latest aggregate dealer gamma exposure snapshot from ClickHouse gex_index. Snapshots are emitted every 60 seconds; freshness is reported in meta.snapshot_time, meta.snapshot_interval_ms, meta.staleness_ms, and meta.warnings.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "currency": {
      "description": "Dealer-worker currency. Examples: BTC, ETH, SOL, XRP, BTC_USDC, ETH_USDC.",
      "example": "BTC",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "date": {
      "description": "Return the latest snapshot at or before this UTC datetime. Defaults to the latest available snapshot.",
      "example": "2026-06-15T10:00:00Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "default": "deribit",
      "description": "Options venue. Dealer GEX is currently backed by Deribit options.",
      "enum": [
        "deribit"
      ],
      "example": "deribit",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of currency/venue rows to return.",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    }
  },
  "required": [],
  "type": "object"
}
Request schema
{
  "properties": {
    "currency": {
      "description": "Dealer-worker currency. Examples: BTC, ETH, SOL, XRP, BTC_USDC, ETH_USDC.",
      "example": "BTC",
      "type": "string"
    },
    "date": {
      "description": "Return the latest snapshot at or before this UTC datetime. Defaults to the latest available snapshot.",
      "example": "2026-06-15T10:00:00Z",
      "format": "date-time",
      "type": "string"
    },
    "exchange": {
      "default": "deribit",
      "description": "Options venue. Dealer GEX is currently backed by Deribit options.",
      "enum": [
        "deribit"
      ],
      "example": "deribit",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of currency/venue rows to return.",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    }
  },
  "type": "object"
}
Response schema
{
  "allOf": [
    {
      "properties": {
        "data": {
          "items": {
            "type": "array"
          },
          "type": "array"
        },
        "meta": {
          "properties": {
            "next_cursor": {
              "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,
              "type": "string"
            }
          },
          "required": [
            "next_cursor"
          ],
          "type": "object",
          "x-openapi-ref": "#/components/schemas/PaginationMetaEntity"
        }
      },
      "required": [
        "data",
        "meta"
      ],
      "type": "object",
      "x-openapi-ref": "#/components/schemas/PaginatedResponse"
    },
    {
      "properties": {
        "data": {
          "items": {
            "properties": {
              "currency": {
                "description": "Dealer-worker currency",
                "example": "BTC",
                "type": "string"
              },
              "date": {
                "description": "Date in ISO 8601 format (UTC)",
                "example": "2024-12-10T00:00:00.000Z",
                "format": "date-time",
                "type": "string"
              },
              "exchange": {
                "description": "Venue name resolved from dealer market id",
                "example": "deribit",
                "type": "string"
              },
              "market": {
                "description": "Dealer market id. 0 maps to Deribit.",
                "example": 0,
                "type": "number"
              },
              "net_long_gex": {
                "description": "Positive dealer GEX contribution",
                "example": 19984373.25,
                "type": "number"
              },
              "net_short_gex": {
                "description": "Negative dealer GEX contribution",
                "example": -24527141.33,
                "type": "number"
              },
              "regime": {
                "description": "Dealer regime classification",
                "example": "neutral",
                "type": "string"
              },
              "spot": {
                "description": "Spot price used for the GEX calculation",
                "example": 65651.87,
                "type": "number"
              },
              "total_gex": {
                "description": "Total dealer gamma exposure per 1% underlying move, USD-normalized",
                "example": -4542768.08,
                "type": "number"
              }
            },
            "required": [
              "date",
              "currency",
              "exchange",
              "market",
              "spot",
              "total_gex",
              "net_long_gex",
              "net_short_gex",
              "regime"
            ],
            "type": "object",
            "x-openapi-ref": "#/components/schemas/OptionsGexIndexEntity"
          },
          "type": "array"
        },
        "meta": {
          "properties": {
            "freshness_basis": {
              "enum": [
                "snapshot"
              ],
              "type": "string"
            },
            "next_cursor": {
              "nullable": true,
              "type": "string"
            },
            "snapshot_interval_ms": {
              "example": 60000,
              "type": "number"
            },
            "snapshot_time": {
              "example": "2026-06-15 10:06:00",
              "nullable": true,
              "type": "string"
            },
            "snapshot_time_iso": {
              "example": "2026-06-15T10:06:00.000Z",
              "nullable": true,
              "type": "string"
            },
            "staleness_ms": {
              "nullable": true,
              "type": "number"
            },
            "warnings": {
              "items": {
                "properties": {
                  "code": {
                    "enum": [
                      "STALE_SNAPSHOT"
                    ],
                    "type": "string"
                  },
                  "message": {
                    "type": "string"
                  }
                },
                "required": [
                  "code",
                  "message"
                ],
                "type": "object"
              },
              "type": "array"
            }
          },
          "type": "object"
        }
      }
    }
  ]
}
Example request
{
  "currency": "BTC",
  "date": "2026-06-15T10:00:00Z",
  "exchange": "deribit",
  "limit": 100
}
Example response
{
  "data": [
    {
      "currency": "BTC",
      "date": "2026-06-15T10:06:00.000Z",
      "exchange": "deribit",
      "market": 0,
      "net_long_gex": 19984373.25,
      "net_short_gex": -24527141.33,
      "regime": "neutral",
      "spot": 65651.87,
      "total_gex": -4542768.08
    }
  ],
  "meta": {
    "freshness_basis": "snapshot",
    "next_cursor": null,
    "snapshot_interval_ms": 60000,
    "snapshot_time": "2026-06-15 10:06:00",
    "snapshot_time_iso": "2026-06-15T10:06:00.000Z",
    "staleness_ms": 42000
  }
}
GET/api/v1/options/gex/profile
$0.10 default
Description

Options data — pay per request

Documentation

Options Dealer GEX Profile

Returns interpolated dealer GEX profile points from ClickHouse. 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.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "currency": {
      "description": "Dealer-worker currency. Examples: BTC, ETH, SOL, XRP, BTC_USDC, ETH_USDC.",
      "example": "BTC",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "date": {
      "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.",
      "example": "2026-06-15T10:00:00Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "default": "deribit",
      "description": "Options venue. Dealer GEX is currently backed by Deribit options.",
      "enum": [
        "deribit"
      ],
      "example": "deribit",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "profile_group": {
      "default": "all_expiries",
      "description": "Profile group to return. Defaults to 'all_expiries'; pass an expiry code for a per-expiry profile.",
      "example": "all_expiries",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "strike_max": {
      "description": "Maximum numeric strike to return.",
      "example": 90000,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "strike_min": {
      "description": "Minimum numeric strike to return.",
      "example": 50000,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    }
  },
  "required": [],
  "type": "object"
}
Request schema
{
  "properties": {
    "currency": {
      "description": "Dealer-worker currency. Examples: BTC, ETH, SOL, XRP, BTC_USDC, ETH_USDC.",
      "example": "BTC",
      "type": "string"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "type": "string"
    },
    "date": {
      "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.",
      "example": "2026-06-15T10:00:00Z",
      "format": "date-time",
      "type": "string"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "exchange": {
      "default": "deribit",
      "description": "Options venue. Dealer GEX is currently backed by Deribit options.",
      "enum": [
        "deribit"
      ],
      "example": "deribit",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "profile_group": {
      "default": "all_expiries",
      "description": "Profile group to return. Defaults to 'all_expiries'; pass an expiry code for a per-expiry profile.",
      "example": "all_expiries",
      "type": "string"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "strike_max": {
      "description": "Maximum numeric strike to return.",
      "example": 90000,
      "type": "number"
    },
    "strike_min": {
      "description": "Minimum numeric strike to return.",
      "example": 50000,
      "type": "number"
    }
  },
  "type": "object"
}
Response schema
{
  "allOf": [
    {
      "properties": {
        "data": {
          "items": {
            "type": "array"
          },
          "type": "array"
        },
        "meta": {
          "properties": {
            "next_cursor": {
              "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,
              "type": "string"
            }
          },
          "required": [
            "next_cursor"
          ],
          "type": "object",
          "x-openapi-ref": "#/components/schemas/PaginationMetaEntity"
        }
      },
      "required": [
        "data",
        "meta"
      ],
      "type": "object",
      "x-openapi-ref": "#/components/schemas/PaginatedResponse"
    },
    {
      "properties": {
        "data": {
          "items": {
            "properties": {
              "currency": {
                "description": "Dealer-worker currency",
                "example": "BTC",
                "type": "string"
              },
              "date": {
                "description": "Date in ISO 8601 format (UTC)",
                "example": "2024-12-10T00:00:00.000Z",
                "format": "date-time",
                "type": "string"
              },
              "exchange": {
                "description": "Venue name resolved from dealer market id",
                "example": "deribit",
                "type": "string"
              },
              "gex": {
                "description": "Legacy raw interpolated GEX value at this profile strike. Use weighted_gex for the dealer-model weighted profile.",
                "example": -1200000,
                "type": "number"
              },
              "interpolator": {
                "description": "Interpolation method used by the dealer worker",
                "example": "pchip",
                "type": "string"
              },
              "market": {
                "description": "Dealer market id. 0 maps to Deribit.",
                "example": 0,
                "type": "number"
              },
              "max_strike": {
                "description": "Maximum strike in the interpolated profile domain",
                "example": 90000,
                "type": "number"
              },
              "min_strike": {
                "description": "Minimum strike in the interpolated profile domain",
                "example": 40000,
                "type": "number"
              },
              "net_long_gex": {
                "description": "Positive dealer GEX contribution",
                "example": 19984373.25,
                "type": "number"
              },
              "net_short_gex": {
                "description": "Negative dealer GEX contribution",
                "example": -24527141.33,
                "type": "number"
              },
              "profile_group": {
                "description": "Profile group, usually 'all_expiries' or an expiry code",
                "example": "all_expiries",
                "type": "string"
              },
              "raw_gex": {
                "description": "Raw interpolated GEX value at this profile strike before dealer-model weighting",
                "example": -1200000,
                "type": "number"
              },
              "regime": {
                "description": "Dealer regime classification",
                "example": "neutral",
                "type": "string"
              },
              "spot": {
                "description": "Spot price used for the GEX calculation",
                "example": 65651.87,
                "type": "number"
              },
              "strike": {
                "description": "Numeric strike parsed from strike_label",
                "example": 65000,
                "type": "number"
              },
              "strike_label": {
                "description": "Original profile strike token produced by the dealer worker",
                "example": "65000",
                "type": "string"
              },
              "total_gex": {
                "description": "Total dealer gamma exposure per 1% underlying move, USD-normalized",
                "example": -4542768.08,
                "type": "number"
              },
              "weighted_gex": {
                "description": "Dealer-model weighted interpolated GEX value at this profile strike",
                "example": -1037880,
                "type": "number"
              }
            },
            "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"
            ],
            "type": "object",
            "x-openapi-ref": "#/components/schemas/OptionsGexProfileEntity"
          },
          "type": "array"
        },
        "meta": {
          "properties": {
            "freshness_basis": {
              "enum": [
                "snapshot"
              ],
              "type": "string"
            },
            "next_cursor": {
              "nullable": true,
              "type": "string"
            },
            "snapshot_interval_ms": {
              "example": 60000,
              "type": "number"
            },
            "snapshot_time": {
              "example": "2026-06-15 10:06:00",
              "nullable": true,
              "type": "string"
            },
            "snapshot_time_iso": {
              "example": "2026-06-15T10:06:00.000Z",
              "nullable": true,
              "type": "string"
            },
            "staleness_ms": {
              "nullable": true,
              "type": "number"
            },
            "warnings": {
              "items": {
                "properties": {
                  "code": {
                    "enum": [
                      "STALE_SNAPSHOT"
                    ],
                    "type": "string"
                  },
                  "message": {
                    "type": "string"
                  }
                },
                "required": [
                  "code",
                  "message"
                ],
                "type": "object"
              },
              "type": "array"
            }
          },
          "type": "object"
        }
      }
    }
  ]
}
Example request
{
  "currency": "BTC",
  "cursor": "test",
  "date": "2026-06-15T10:00:00Z",
  "end": "2026-07-21T10:00:00.000Z",
  "exchange": "deribit",
  "limit": 100,
  "profile_group": "all_expiries",
  "sort_dir": "ASC",
  "start": "2026-07-14T10:00:00.000Z",
  "strike_max": 90000,
  "strike_min": 50000
}
Example response
{
  "data": [
    {
      "currency": "BTC",
      "date": "2026-06-15T10:06:00.000Z",
      "exchange": "deribit",
      "gex": -1200000,
      "interpolator": "pchip",
      "market": 0,
      "max_strike": 90000,
      "min_strike": 40000,
      "profile_group": "all_expiries",
      "raw_gex": -1200000,
      "spot": 65651.87,
      "strike": 65000,
      "strike_label": "65000",
      "total_gex": -4542768.08,
      "weighted_gex": -1037880
    }
  ],
  "meta": {
    "freshness_basis": "snapshot",
    "next_cursor": null,
    "snapshot_interval_ms": 60000,
    "snapshot_time": "2026-06-15 10:06:00",
    "snapshot_time_iso": "2026-06-15T10:06:00.000Z",
    "staleness_ms": 42000
  }
}
GET/api/v1/options/gex/regime-changes
$0.10 default
Description

Options data — pay per request

Documentation

Options Dealer GEX Regime Changes

Returns aggregate dealer-regime transitions from gex_index for one currency/venue. Use this to detect flips between positive, negative, and neutral dealer-gamma regimes.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "currency": {
      "description": "Dealer-worker currency. Examples: BTC, ETH, SOL, XRP, BTC_USDC, ETH_USDC.",
      "example": "BTC",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "cursor": {
      "description": "Pagination cursor from meta.next_cursor.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC). Defaults to now.",
      "example": "2026-06-15T00:00:00Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "default": "deribit",
      "description": "Options venue. Dealer GEX is currently backed by Deribit options.",
      "enum": [
        "deribit"
      ],
      "example": "deribit",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of regime changes to return.",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "sort_dir": {
      "default": "DESC",
      "description": "Sort direction by transition time.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 7 days ago.",
      "example": "2026-06-08T00:00:00Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [],
  "type": "object"
}
Request schema
{
  "properties": {
    "currency": {
      "description": "Dealer-worker currency. Examples: BTC, ETH, SOL, XRP, BTC_USDC, ETH_USDC.",
      "example": "BTC",
      "type": "string"
    },
    "cursor": {
      "description": "Pagination cursor from meta.next_cursor.",
      "type": "string"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC). Defaults to now.",
      "example": "2026-06-15T00:00:00Z",
      "format": "date-time",
      "type": "string"
    },
    "exchange": {
      "default": "deribit",
      "description": "Options venue. Dealer GEX is currently backed by Deribit options.",
      "enum": [
        "deribit"
      ],
      "example": "deribit",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of regime changes to return.",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "sort_dir": {
      "default": "DESC",
      "description": "Sort direction by transition time.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 7 days ago.",
      "example": "2026-06-08T00:00:00Z",
      "format": "date-time",
      "type": "string"
    }
  },
  "type": "object"
}
Response schema
{
  "allOf": [
    {
      "properties": {
        "data": {
          "items": {
            "type": "array"
          },
          "type": "array"
        },
        "meta": {
          "properties": {
            "next_cursor": {
              "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,
              "type": "string"
            }
          },
          "required": [
            "next_cursor"
          ],
          "type": "object",
          "x-openapi-ref": "#/components/schemas/PaginationMetaEntity"
        }
      },
      "required": [
        "data",
        "meta"
      ],
      "type": "object",
      "x-openapi-ref": "#/components/schemas/PaginatedResponse"
    },
    {
      "properties": {
        "data": {
          "items": {
            "properties": {
              "currency": {
                "description": "Dealer-worker currency",
                "example": "BTC",
                "type": "string"
              },
              "date": {
                "description": "Date in ISO 8601 format (UTC)",
                "example": "2024-12-10T00:00:00.000Z",
                "format": "date-time",
                "type": "string"
              },
              "exchange": {
                "description": "Venue name resolved from dealer market id",
                "example": "deribit",
                "type": "string"
              },
              "market": {
                "description": "Dealer market id. 0 maps to Deribit.",
                "example": 0,
                "type": "number"
              },
              "net_long_gex": {
                "description": "Positive dealer GEX contribution",
                "example": 19984373.25,
                "type": "number"
              },
              "net_short_gex": {
                "description": "Negative dealer GEX contribution",
                "example": -24527141.33,
                "type": "number"
              },
              "previous_regime": {
                "description": "Previous regime before the transition",
                "example": "positive",
                "type": "string"
              },
              "regime": {
                "description": "Dealer regime classification",
                "example": "neutral",
                "type": "string"
              },
              "spot": {
                "description": "Spot price used for the GEX calculation",
                "example": 65651.87,
                "type": "number"
              },
              "total_gex": {
                "description": "Total dealer gamma exposure per 1% underlying move, USD-normalized",
                "example": -4542768.08,
                "type": "number"
              }
            },
            "required": [
              "date",
              "currency",
              "exchange",
              "market",
              "spot",
              "total_gex",
              "net_long_gex",
              "net_short_gex",
              "regime",
              "previous_regime"
            ],
            "type": "object",
            "x-openapi-ref": "#/components/schemas/OptionsGexRegimeChangeEntity"
          },
          "type": "array"
        },
        "meta": {
          "properties": {
            "next_cursor": {
              "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,
              "type": "string"
            }
          },
          "required": [
            "next_cursor"
          ],
          "type": "object",
          "x-openapi-ref": "#/components/schemas/PaginationMetaEntity"
        }
      }
    }
  ]
}
Example request
{
  "currency": "BTC",
  "cursor": "test",
  "end": "2026-06-15T00:00:00Z",
  "exchange": "deribit",
  "limit": 100,
  "sort_dir": "DESC",
  "start": "2026-06-08T00:00:00Z"
}
Example response
{
  "data": [
    {
      "currency": "BTC",
      "date": "2026-06-15T09:18:00.000Z",
      "exchange": "deribit",
      "market": 0,
      "net_long_gex": 21400000,
      "net_short_gex": -21275000,
      "previous_regime": "negative",
      "regime": "neutral",
      "spot": 65380.22,
      "total_gex": 125000
    }
  ],
  "meta": {
    "next_cursor": null
  }
}
GET/api/v1/options/gex/strikes
$0.10 default
Description

Options data — pay per request

Documentation

Options Dealer GEX Strike Contributions

Returns strike-level dealer GEX contributions from ClickHouse. 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.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "contribution_basis": {
      "default": "weighted",
      "description": "Contribution basis used by min_abs_contribution. weighted reconciles with aggregate total_gex; raw preserves unweighted decomposition.",
      "enum": [
        "weighted",
        "raw"
      ],
      "example": "weighted",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "currency": {
      "description": "Dealer-worker currency. Examples: BTC, ETH, SOL, XRP, BTC_USDC, ETH_USDC.",
      "example": "BTC",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "date": {
      "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.",
      "example": "2026-06-15T10:00:00Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "default": "deribit",
      "description": "Options venue. Dealer GEX is currently backed by Deribit options.",
      "enum": [
        "deribit"
      ],
      "example": "deribit",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "expiry": {
      "description": "Expiry code to filter, e.g. '27JUN26'. Use 'all_expiries' for the aggregate strike view.",
      "example": "all_expiries",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "include_expiries": {
      "default": false,
      "description": "Include per-expiry rows when expiry is omitted. Defaults to false, which returns aggregate all_expiries rows only.",
      "required": false,
      "type": "boolean",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "min_abs_contribution": {
      "description": "Minimum absolute GEX contribution on contribution_basis. Defaults to weighted contribution, which reconciles with aggregate total_gex.",
      "example": 10000,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "strike_max": {
      "description": "Maximum numeric strike to return.",
      "example": 90000,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "strike_min": {
      "description": "Minimum numeric strike to return.",
      "example": 50000,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    }
  },
  "required": [],
  "type": "object"
}
Request schema
{
  "properties": {
    "contribution_basis": {
      "default": "weighted",
      "description": "Contribution basis used by min_abs_contribution. weighted reconciles with aggregate total_gex; raw preserves unweighted decomposition.",
      "enum": [
        "weighted",
        "raw"
      ],
      "example": "weighted",
      "type": "string"
    },
    "currency": {
      "description": "Dealer-worker currency. Examples: BTC, ETH, SOL, XRP, BTC_USDC, ETH_USDC.",
      "example": "BTC",
      "type": "string"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "type": "string"
    },
    "date": {
      "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.",
      "example": "2026-06-15T10:00:00Z",
      "format": "date-time",
      "type": "string"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "exchange": {
      "default": "deribit",
      "description": "Options venue. Dealer GEX is currently backed by Deribit options.",
      "enum": [
        "deribit"
      ],
      "example": "deribit",
      "type": "string"
    },
    "expiry": {
      "description": "Expiry code to filter, e.g. '27JUN26'. Use 'all_expiries' for the aggregate strike view.",
      "example": "all_expiries",
      "type": "string"
    },
    "include_expiries": {
      "default": false,
      "description": "Include per-expiry rows when expiry is omitted. Defaults to false, which returns aggregate all_expiries rows only.",
      "type": "boolean"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "min_abs_contribution": {
      "description": "Minimum absolute GEX contribution on contribution_basis. Defaults to weighted contribution, which reconciles with aggregate total_gex.",
      "example": 10000,
      "type": "number"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "strike_max": {
      "description": "Maximum numeric strike to return.",
      "example": 90000,
      "type": "number"
    },
    "strike_min": {
      "description": "Minimum numeric strike to return.",
      "example": 50000,
      "type": "number"
    }
  },
  "type": "object"
}
Response schema
{
  "allOf": [
    {
      "properties": {
        "data": {
          "items": {
            "type": "array"
          },
          "type": "array"
        },
        "meta": {
          "properties": {
            "next_cursor": {
              "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,
              "type": "string"
            }
          },
          "required": [
            "next_cursor"
          ],
          "type": "object",
          "x-openapi-ref": "#/components/schemas/PaginationMetaEntity"
        }
      },
      "required": [
        "data",
        "meta"
      ],
      "type": "object",
      "x-openapi-ref": "#/components/schemas/PaginatedResponse"
    },
    {
      "properties": {
        "data": {
          "items": {
            "properties": {
              "contribution": {
                "description": "Legacy raw GEX contribution for this strike bucket. Use weighted_contribution to reconcile with aggregate total_gex.",
                "example": -1500000,
                "type": "number"
              },
              "currency": {
                "description": "Dealer-worker currency",
                "example": "BTC",
                "type": "string"
              },
              "date": {
                "description": "Date in ISO 8601 format (UTC)",
                "example": "2024-12-10T00:00:00.000Z",
                "format": "date-time",
                "type": "string"
              },
              "exchange": {
                "description": "Venue name resolved from dealer market id",
                "example": "deribit",
                "type": "string"
              },
              "expiry": {
                "description": "Expiry code, or 'all_expiries' for the aggregate view",
                "example": "all_expiries",
                "type": "string"
              },
              "expiry_weight": {
                "description": "Expiry weighting used by the dealer model; zero on all_expiries rows",
                "example": 0,
                "type": "number"
              },
              "is_aggregate": {
                "description": "True when this row belongs to the aggregate all-expiries view",
                "example": true,
                "type": "boolean"
              },
              "market": {
                "description": "Dealer market id. 0 maps to Deribit.",
                "example": 0,
                "type": "number"
              },
              "moneyness_weight": {
                "description": "Moneyness weighting used by the dealer model",
                "example": 0.93,
                "type": "number"
              },
              "neg_contribution": {
                "description": "Legacy raw negative GEX contribution for this strike bucket.",
                "example": -1700000,
                "type": "number"
              },
              "net_long_gex": {
                "description": "Positive dealer GEX contribution",
                "example": 19984373.25,
                "type": "number"
              },
              "net_short_gex": {
                "description": "Negative dealer GEX contribution",
                "example": -24527141.33,
                "type": "number"
              },
              "pos_contribution": {
                "description": "Legacy raw positive GEX contribution for this strike bucket.",
                "example": 200000,
                "type": "number"
              },
              "raw_contribution": {
                "description": "Raw GEX contribution before dealer-model weighting",
                "example": -1500000,
                "type": "number"
              },
              "raw_neg_contribution": {
                "description": "Raw negative GEX contribution before dealer-model weighting",
                "example": -1700000,
                "type": "number"
              },
              "raw_pos_contribution": {
                "description": "Raw positive GEX contribution before dealer-model weighting",
                "example": 200000,
                "type": "number"
              },
              "regime": {
                "description": "Dealer regime classification",
                "example": "neutral",
                "type": "string"
              },
              "spot": {
                "description": "Spot price used for the GEX calculation",
                "example": 65651.87,
                "type": "number"
              },
              "strike": {
                "description": "Numeric strike parsed from strike_label",
                "example": 65000,
                "type": "number"
              },
              "strike_label": {
                "description": "Original strike token produced by the dealer worker",
                "example": "65000",
                "type": "string"
              },
              "total_gex": {
                "description": "Total dealer gamma exposure per 1% underlying move, USD-normalized",
                "example": -4542768.08,
                "type": "number"
              },
              "weighted_contribution": {
                "description": "Dealer-model weighted GEX contribution. Sum per-expiry weighted_contribution rows to reconcile with aggregate total_gex.",
                "example": -1297350,
                "type": "number"
              },
              "weighted_neg_contribution": {
                "description": "Dealer-model weighted negative GEX contribution.",
                "example": -1470330,
                "type": "number"
              },
              "weighted_pos_contribution": {
                "description": "Dealer-model weighted positive GEX contribution.",
                "example": 172980,
                "type": "number"
              }
            },
            "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"
            ],
            "type": "object",
            "x-openapi-ref": "#/components/schemas/OptionsGexStrikeContributionEntity"
          },
          "type": "array"
        },
        "meta": {
          "properties": {
            "freshness_basis": {
              "enum": [
                "snapshot"
              ],
              "type": "string"
            },
            "next_cursor": {
              "nullable": true,
              "type": "string"
            },
            "snapshot_interval_ms": {
              "example": 60000,
              "type": "number"
            },
            "snapshot_time": {
              "example": "2026-06-15 10:06:00",
              "nullable": true,
              "type": "string"
            },
            "snapshot_time_iso": {
              "example": "2026-06-15T10:06:00.000Z",
              "nullable": true,
              "type": "string"
            },
            "staleness_ms": {
              "nullable": true,
              "type": "number"
            },
            "warnings": {
              "items": {
                "properties": {
                  "code": {
                    "enum": [
                      "STALE_SNAPSHOT"
                    ],
                    "type": "string"
                  },
                  "message": {
                    "type": "string"
                  }
                },
                "required": [
                  "code",
                  "message"
                ],
                "type": "object"
              },
              "type": "array"
            }
          },
          "type": "object"
        }
      }
    }
  ]
}
Example request
{
  "contribution_basis": "weighted",
  "currency": "BTC",
  "cursor": "test",
  "date": "2026-06-15T10:00:00Z",
  "end": "2026-07-21T10:00:00.000Z",
  "exchange": "deribit",
  "expiry": "all_expiries",
  "include_expiries": false,
  "limit": 100,
  "min_abs_contribution": 10000,
  "sort_dir": "ASC",
  "start": "2026-07-14T10:00:00.000Z",
  "strike_max": 90000,
  "strike_min": 50000
}
Example response
{
  "data": [
    {
      "contribution": -1500000,
      "currency": "BTC",
      "date": "2026-06-15T10:06:00.000Z",
      "exchange": "deribit",
      "expiry": "all_expiries",
      "expiry_weight": 0,
      "is_aggregate": true,
      "market": 0,
      "moneyness_weight": 0.93,
      "neg_contribution": -1700000,
      "pos_contribution": 200000,
      "raw_contribution": -1500000,
      "raw_neg_contribution": -1700000,
      "raw_pos_contribution": 200000,
      "spot": 65651.87,
      "strike": 65000,
      "strike_label": "65000",
      "total_gex": -4542768.08,
      "weighted_contribution": -1297350,
      "weighted_neg_contribution": -1470330,
      "weighted_pos_contribution": 172980
    }
  ],
  "meta": {
    "freshness_basis": "snapshot",
    "next_cursor": null,
    "snapshot_interval_ms": 60000,
    "snapshot_time": "2026-06-15 10:06:00",
    "snapshot_time_iso": "2026-06-15T10:06:00.000Z",
    "staleness_ms": 42000
  }
}
GET/api/v1/options/gex/term-structure
$0.10 default
Description

Options data — pay per request

Documentation

Options Dealer GEX Term Structure

Returns per-expiry dealer GEX term structure from ClickHouse. 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.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "currency": {
      "description": "Dealer-worker currency. Examples: BTC, ETH, SOL, XRP, BTC_USDC, ETH_USDC.",
      "example": "BTC",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "date": {
      "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.",
      "example": "2026-06-15T10:00:00Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "default": "deribit",
      "description": "Options venue. Dealer GEX is currently backed by Deribit options.",
      "enum": [
        "deribit"
      ],
      "example": "deribit",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "expiry": {
      "description": "Expiry code to filter, e.g. '27JUN26'. Omit to return all expiries.",
      "example": "27JUN26",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [],
  "type": "object"
}
Request schema
{
  "properties": {
    "currency": {
      "description": "Dealer-worker currency. Examples: BTC, ETH, SOL, XRP, BTC_USDC, ETH_USDC.",
      "example": "BTC",
      "type": "string"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "type": "string"
    },
    "date": {
      "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.",
      "example": "2026-06-15T10:00:00Z",
      "format": "date-time",
      "type": "string"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "exchange": {
      "default": "deribit",
      "description": "Options venue. Dealer GEX is currently backed by Deribit options.",
      "enum": [
        "deribit"
      ],
      "example": "deribit",
      "type": "string"
    },
    "expiry": {
      "description": "Expiry code to filter, e.g. '27JUN26'. Omit to return all expiries.",
      "example": "27JUN26",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    }
  },
  "type": "object"
}
Response schema
{
  "allOf": [
    {
      "properties": {
        "data": {
          "items": {
            "type": "array"
          },
          "type": "array"
        },
        "meta": {
          "properties": {
            "next_cursor": {
              "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,
              "type": "string"
            }
          },
          "required": [
            "next_cursor"
          ],
          "type": "object",
          "x-openapi-ref": "#/components/schemas/PaginationMetaEntity"
        }
      },
      "required": [
        "data",
        "meta"
      ],
      "type": "object",
      "x-openapi-ref": "#/components/schemas/PaginatedResponse"
    },
    {
      "properties": {
        "data": {
          "items": {
            "properties": {
              "currency": {
                "description": "Dealer-worker currency",
                "example": "BTC",
                "type": "string"
              },
              "date": {
                "description": "Date in ISO 8601 format (UTC)",
                "example": "2024-12-10T00:00:00.000Z",
                "format": "date-time",
                "type": "string"
              },
              "exchange": {
                "description": "Venue name resolved from dealer market id",
                "example": "deribit",
                "type": "string"
              },
              "expiry": {
                "description": "Expiry code",
                "example": "27JUN26",
                "type": "string"
              },
              "market": {
                "description": "Dealer market id. 0 maps to Deribit.",
                "example": 0,
                "type": "number"
              },
              "net_long_gex": {
                "description": "Legacy raw positive GEX contribution for this expiry",
                "example": 200000,
                "type": "number"
              },
              "net_short_gex": {
                "description": "Legacy raw negative GEX contribution for this expiry",
                "example": -1700000,
                "type": "number"
              },
              "raw_net_long_gex": {
                "description": "Raw positive GEX contribution for this expiry before dealer-model weighting",
                "example": 200000,
                "type": "number"
              },
              "raw_net_short_gex": {
                "description": "Raw negative GEX contribution for this expiry before dealer-model weighting",
                "example": -1700000,
                "type": "number"
              },
              "raw_total_gex": {
                "description": "Raw total GEX contribution for this expiry before dealer-model weighting",
                "example": -1500000,
                "type": "number"
              },
              "snapshot_total_gex": {
                "description": "Full-snapshot total GEX for context",
                "example": -4542768.08,
                "type": "number"
              },
              "spot": {
                "description": "Spot price used for this snapshot",
                "example": 65651.87,
                "type": "number"
              },
              "strike_count": {
                "description": "Number of strike buckets contributing to this expiry",
                "example": 43,
                "type": "number"
              },
              "total_gex": {
                "description": "Legacy raw total GEX contribution for this expiry. Use weighted_total_gex to reconcile with aggregate total_gex.",
                "example": -1500000,
                "type": "number"
              },
              "weighted_net_long_gex": {
                "description": "Dealer-model weighted positive GEX contribution for this expiry",
                "example": 172980,
                "type": "number"
              },
              "weighted_net_short_gex": {
                "description": "Dealer-model weighted negative GEX contribution for this expiry",
                "example": -1470330,
                "type": "number"
              },
              "weighted_total_gex": {
                "description": "Dealer-model weighted total GEX contribution for this expiry. Sum this field across expiries to reconcile with snapshot_total_gex.",
                "example": -1297350,
                "type": "number"
              }
            },
            "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"
            ],
            "type": "object",
            "x-openapi-ref": "#/components/schemas/OptionsGexTermStructureEntity"
          },
          "type": "array"
        },
        "meta": {
          "properties": {
            "freshness_basis": {
              "enum": [
                "snapshot"
              ],
              "type": "string"
            },
            "next_cursor": {
              "nullable": true,
              "type": "string"
            },
            "snapshot_interval_ms": {
              "example": 60000,
              "type": "number"
            },
            "snapshot_time": {
              "example": "2026-06-15 10:06:00",
              "nullable": true,
              "type": "string"
            },
            "snapshot_time_iso": {
              "example": "2026-06-15T10:06:00.000Z",
              "nullable": true,
              "type": "string"
            },
            "staleness_ms": {
              "nullable": true,
              "type": "number"
            },
            "warnings": {
              "items": {
                "properties": {
                  "code": {
                    "enum": [
                      "STALE_SNAPSHOT"
                    ],
                    "type": "string"
                  },
                  "message": {
                    "type": "string"
                  }
                },
                "required": [
                  "code",
                  "message"
                ],
                "type": "object"
              },
              "type": "array"
            }
          },
          "type": "object"
        }
      }
    }
  ]
}
Example request
{
  "currency": "BTC",
  "cursor": "test",
  "date": "2026-06-15T10:00:00Z",
  "end": "2026-07-21T10:00:00.000Z",
  "exchange": "deribit",
  "expiry": "27JUN26",
  "limit": 100,
  "sort_dir": "ASC",
  "start": "2026-07-14T10:00:00.000Z"
}
Example response
{
  "data": [
    {
      "currency": "BTC",
      "date": "2026-06-15T10:06:00.000Z",
      "exchange": "deribit",
      "expiry": "27JUN26",
      "market": 0,
      "net_long_gex": 5500000,
      "net_short_gex": -7600000,
      "raw_net_long_gex": 5500000,
      "raw_net_short_gex": -7600000,
      "raw_total_gex": -2100000,
      "snapshot_total_gex": -4542768.08,
      "spot": 65651.87,
      "strike_count": 43,
      "total_gex": -2100000,
      "weighted_net_long_gex": 4755300,
      "weighted_net_short_gex": -6571590,
      "weighted_total_gex": -1816290
    }
  ],
  "meta": {
    "freshness_basis": "snapshot",
    "next_cursor": null,
    "snapshot_interval_ms": 60000,
    "snapshot_time": "2026-06-15 10:06:00",
    "snapshot_time_iso": "2026-06-15T10:06:00.000Z",
    "staleness_ms": 42000
  }
}
GET/api/v1/options/level1
$0.10 default
Description

Options data — pay per request

Documentation

Options Level 1

Returns level 1 order book data for options instruments.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance, okx, bybit, bullish, derive)",
      "example": "deribit",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name": {
      "description": "Full options instrument identifier (e.g., BTC-24JUL26-68000-C, ETH-25DEC26-4000-P)",
      "example": "BTC-24JUL26-68000-C",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for bucketing results",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [],
  "type": "object"
}
Request schema
{
  "properties": {
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "type": "string"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance, okx, bybit, bullish, derive)",
      "example": "deribit",
      "type": "string"
    },
    "instrument_name": {
      "description": "Full options instrument identifier (e.g., BTC-24JUL26-68000-C, ETH-25DEC26-4000-P)",
      "example": "BTC-24JUL26-68000-C",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for bucketing results",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "type": "string"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    }
  },
  "type": "object"
}
Response schema
{
  "allOf": [
    {
      "properties": {
        "data": {
          "items": {
            "type": "array"
          },
          "type": "array"
        },
        "meta": {
          "properties": {
            "next_cursor": {
              "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,
              "type": "string"
            }
          },
          "required": [
            "next_cursor"
          ],
          "type": "object",
          "x-openapi-ref": "#/components/schemas/PaginationMetaEntity"
        }
      },
      "required": [
        "data",
        "meta"
      ],
      "type": "object",
      "x-openapi-ref": "#/components/schemas/PaginatedResponse"
    },
    {
      "properties": {
        "data": {
          "type": "array"
        }
      }
    }
  ]
}
Example request
{
  "cursor": "test",
  "end": "2026-07-21T10:00:00.000Z",
  "exchange": "deribit",
  "instrument_name": "BTC-24JUL26-68000-C",
  "limit": 100,
  "resolution": "1m",
  "sort_dir": "ASC",
  "start": "2026-07-14T10:00:00.000Z"
}
Example response
{
  "data": [
    {
      "ask_price_close": 0.22,
      "ask_price_high": 0.22,
      "ask_price_low": 0.2195,
      "ask_price_open": 0.2195,
      "ask_size_close": 31.3,
      "ask_size_high": 31.3,
      "ask_size_low": 12,
      "ask_size_open": 19.4,
      "bid_ask_spread_close": 0.008500000000000008,
      "bid_ask_spread_high": 0.008500000000000008,
      "bid_ask_spread_low": 0.007500000000000007,
      "bid_ask_spread_open": 0.007500000000000007,
      "bid_price_close": 0.2115,
      "bid_price_high": 0.212,
      "bid_price_low": 0.2115,
      "bid_price_open": 0.212,
      "bid_size_close": 19.3,
      "bid_size_high": 19.3,
      "bid_size_low": 19.3,
      "bid_size_open": 19.3,
      "date": "2025-11-04 11:00:00",
      "total_liquidity_avg": 43.16666666666667,
      "total_liquidity_close": 50.6,
      "total_liquidity_high": 50.6,
      "total_liquidity_low": 31.3,
      "total_liquidity_open": 38.7
    },
    {
      "ask_price_close": 0.22,
      "ask_price_high": 0.22,
      "ask_price_low": 0.22,
      "ask_price_open": 0.22,
      "ask_size_close": 31.3,
      "ask_size_high": 31.3,
      "ask_size_low": 31.3,
      "ask_size_open": 31.3,
      "bid_ask_spread_close": 0.008500000000000008,
      "bid_ask_spread_high": 0.008500000000000008,
      "bid_ask_spread_low": 0.008500000000000008,
      "bid_ask_spread_open": 0.008500000000000008,
      "bid_price_close": 0.2115,
      "bid_price_high": 0.2115,
      "bid_price_low": 0.2115,
      "bid_price_open": 0.2115,
      "bid_size_close": 19.3,
      "bid_size_high": 19.3,
      "bid_size_low": 19.3,
      "bid_size_open": 19.3,
      "date": "2025-11-04 11:01:00",
      "total_liquidity_avg": 50.600000000000016,
      "total_liquidity_close": 50.6,
      "total_liquidity_high": 50.6,
      "total_liquidity_low": 50.6,
      "total_liquidity_open": 50.6
    },
    {
      "ask_price_close": 0.219,
      "ask_price_high": 0.22,
      "ask_price_low": 0.219,
      "ask_price_open": 0.22,
      "ask_size_close": 19.6,
      "ask_size_high": 31.3,
      "ask_size_low": 19.3,
      "ask_size_open": 31.3,
      "bid_ask_spread_close": 0.0050000000000000044,
      "bid_ask_spread_high": 0.009000000000000008,
      "bid_ask_spread_low": 0.0050000000000000044,
      "bid_ask_spread_open": 0.009000000000000008,
      "bid_price_close": 0.214,
      "bid_price_high": 0.214,
      "bid_price_low": 0.211,
      "bid_price_open": 0.211,
      "bid_size_close": 0.3,
      "bid_size_high": 19.3,
      "bid_size_low": 0.3,
      "bid_size_open": 19.3,
      "date": "2025-11-04 11:02:00",
      "total_liquidity_avg": 26.576190476190483,
      "total_liquidity_close": 19.9,
      "total_liquidity_high": 50.6,
      "total_liquidity_low": 19.6,
      "total_liquidity_open": 50.6
    }
  ],
  "meta": {
    "next_cursor": "eyJtaW51dGUiOiIyMDI1LTExLTA0IDEyOjM5OjAwIn0="
  }
}
GET/api/v1/options/metadata
$0.10 default
Description

Options data — pay per request

Documentation

Options Metadata

Returns metadata for a specific options instrument including data availability, total record count, and pagination information.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "exchange": {
      "description": "Exchange name",
      "example": "deribit",
      "required": true,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name": {
      "description": "Instrument name",
      "example": "BTC-24JUL26-68000-C",
      "required": true,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Number of records per page for pagination calculation",
      "example": 100,
      "maximum": 100,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    }
  },
  "required": [
    "exchange",
    "instrument_name"
  ],
  "type": "object"
}
Request schema
{
  "properties": {
    "exchange": {
      "description": "Exchange name",
      "example": "deribit",
      "type": "string"
    },
    "instrument_name": {
      "description": "Instrument name",
      "example": "BTC-24JUL26-68000-C",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Number of records per page for pagination calculation",
      "example": 100,
      "maximum": 100,
      "minimum": 1,
      "type": "number"
    }
  },
  "required": [
    "exchange",
    "instrument_name"
  ],
  "type": "object"
}
Response schema
{
  "properties": {
    "end_date": {
      "description": "End date of available data (ISO 8601 format)",
      "example": "2025-11-21T23:59:00.000Z",
      "type": "string"
    },
    "exchange": {
      "description": "Exchange name",
      "example": "deribit",
      "type": "string"
    },
    "instrument_name": {
      "description": "Instrument name",
      "example": "BTC-PERPETUAL",
      "type": "string"
    },
    "start_date": {
      "description": "Start date of available data (ISO 8601 format)",
      "example": "2020-01-01T00:00:00.000Z",
      "type": "string"
    },
    "total_count": {
      "description": "Total count of records available",
      "example": 1500000,
      "type": "number"
    },
    "total_pages": {
      "description": "Total number of pages based on the provided limit",
      "example": 15000,
      "type": "number"
    }
  },
  "required": [
    "exchange",
    "instrument_name",
    "start_date",
    "end_date",
    "total_count",
    "total_pages"
  ],
  "type": "object",
  "x-openapi-ref": "#/components/schemas/MetadataResponseEntity"
}
Example request
{
  "exchange": "deribit",
  "instrument_name": "BTC-24JUL26-68000-C",
  "limit": 100
}
Example response
{
  "end_date": "2025-11-21T23:59:00.000Z",
  "exchange": "deribit",
  "instrument_name": "BTC-PERPETUAL",
  "start_date": "2020-01-01T00:00:00.000Z",
  "total_count": 1500000,
  "total_pages": 15000
}
GET/api/v1/options/ohlcvt
$0.10 default
Description

Options data — pay per request

Documentation

Options OHLC Market Data

Returns open, high, low, close, volume, and trade statistics for a specific option instrument aggregated by the requested resolution.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance, okx, bybit, bullish, derive)",
      "example": "deribit",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name": {
      "description": "Full options instrument identifier (e.g., BTC-24JUL26-68000-C, ETH-25DEC26-4000-P)",
      "example": "BTC-24JUL26-68000-C",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for bucketing results",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [],
  "type": "object"
}
Request schema
{
  "properties": {
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "type": "string"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance, okx, bybit, bullish, derive)",
      "example": "deribit",
      "type": "string"
    },
    "instrument_name": {
      "description": "Full options instrument identifier (e.g., BTC-24JUL26-68000-C, ETH-25DEC26-4000-P)",
      "example": "BTC-24JUL26-68000-C",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for bucketing results",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "type": "string"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    }
  },
  "type": "object"
}
Response schema
{
  "allOf": [
    {
      "properties": {
        "data": {
          "items": {
            "type": "array"
          },
          "type": "array"
        },
        "meta": {
          "properties": {
            "next_cursor": {
              "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,
              "type": "string"
            }
          },
          "required": [
            "next_cursor"
          ],
          "type": "object",
          "x-openapi-ref": "#/components/schemas/PaginationMetaEntity"
        }
      },
      "required": [
        "data",
        "meta"
      ],
      "type": "object",
      "x-openapi-ref": "#/components/schemas/PaginatedResponse"
    },
    {
      "properties": {
        "data": {
          "items": {
            "properties": {
              "block_trade_buy_volume": {
                "description": "Volume from block trade buys",
                "example": 100,
                "nullable": true,
                "type": "number"
              },
              "block_trade_sell_volume": {
                "description": "Volume from block trade sells",
                "example": 150,
                "nullable": true,
                "type": "number"
              },
              "buy_trades_count": {
                "description": "Number of buy trades",
                "example": 150,
                "type": "number"
              },
              "buy_volume": {
                "description": "Buy-side volume (direction = buy)",
                "example": 1500.5,
                "type": "number"
              },
              "close": {
                "description": "Closing trade price in the time bucket",
                "example": 42500,
                "type": "number"
              },
              "currency": {
                "description": "Base currency",
                "example": "BTC",
                "type": "string"
              },
              "date": {
                "description": "Date in ISO 8601 format (UTC)",
                "example": "2024-12-10T00:00:00.000Z",
                "format": "date-time",
                "type": "string"
              },
              "days_to_expiry": {
                "description": "Days until expiry (NULL for PERPETUAL)",
                "example": 90.5,
                "nullable": true,
                "type": "number"
              },
              "exchange": {
                "description": "Exchange name",
                "example": "deribit",
                "type": "string"
              },
              "high": {
                "description": "Highest trade price in the time bucket",
                "example": 42890.75,
                "type": "number"
              },
              "index_price": {
                "description": "Index price at bar close (for reference)",
                "example": 42505,
                "nullable": true,
                "type": "number"
              },
              "instrument_name": {
                "description": "Instrument name",
                "example": "BTC-25DEC26",
                "type": "string"
              },
              "liquidation_long_volume": {
                "description": "Volume from long liquidations (forced sell orders)",
                "example": 75.5,
                "nullable": true,
                "type": "number"
              },
              "liquidation_short_volume": {
                "description": "Volume from short liquidations (forced buy orders)",
                "example": 50.25,
                "nullable": true,
                "type": "number"
              },
              "low": {
                "description": "Lowest trade price in the time bucket",
                "example": 41920.25,
                "type": "number"
              },
              "mark_price": {
                "description": "Mark price at bar close (for reference)",
                "example": 42500.5,
                "nullable": true,
                "type": "number"
              },
              "open": {
                "description": "Opening trade price in the time bucket",
                "example": 42150.5,
                "type": "number"
              },
              "sell_trades_count": {
                "description": "Number of sell trades",
                "example": 120,
                "type": "number"
              },
              "sell_volume": {
                "description": "Sell-side volume (direction = sell)",
                "example": 1200.3,
                "type": "number"
              },
              "trades_count": {
                "description": "Total number of trades (buy + sell)",
                "example": 270,
                "type": "number"
              },
              "volume": {
                "description": "Total volume (buy + sell)",
                "example": 2700.8,
                "type": "number"
              },
              "vwap": {
                "description": "Volume Weighted Average Price (VWAP)",
                "example": 42350.5,
                "type": "number"
              }
            },
            "required": [
              "date",
              "open",
              "high",
              "low",
              "close",
              "vwap",
              "volume",
              "buy_volume",
              "sell_volume",
              "trades_count",
              "buy_trades_count",
              "sell_trades_count"
            ],
            "type": "object",
            "x-openapi-ref": "#/components/schemas/OptionsOhlcvtEntity"
          },
          "type": "array"
        }
      }
    }
  ]
}
Example request
{
  "cursor": "test",
  "end": "2026-07-21T10:00:00.000Z",
  "exchange": "deribit",
  "instrument_name": "BTC-24JUL26-68000-C",
  "limit": 100,
  "resolution": "1m",
  "sort_dir": "ASC",
  "start": "2026-07-14T10:00:00.000Z"
}
Example response
{
  "data": [
    {
      "block_trade_buy_volume": null,
      "block_trade_sell_volume": null,
      "buy_trades_count": 0,
      "buy_volume": 0,
      "close": 0.2157,
      "date": "2025-11-04 11:00:00",
      "days_to_expiry": 324.9166666666667,
      "high": 0.2157,
      "index_price": 103722.83,
      "liquidation_long_volume": null,
      "liquidation_short_volume": null,
      "low": 0.2157,
      "mark_price": 0.2157,
      "open": 0.2157,
      "sell_trades_count": 0,
      "sell_volume": 0,
      "trades_count": 0,
      "volume": 0,
      "vwap": 0.2157
    },
    {
      "block_trade_buy_volume": null,
      "block_trade_sell_volume": null,
      "buy_trades_count": 0,
      "buy_volume": 0,
      "close": 0.2154,
      "date": "2025-11-04 11:01:00",
      "days_to_expiry": 324.91597222222225,
      "high": 0.2154,
      "index_price": 103639.67,
      "liquidation_long_volume": 280,
      "liquidation_short_volume": 120,
      "low": 0.2154,
      "mark_price": 0.2154,
      "open": 0.2154,
      "sell_trades_count": 0,
      "sell_volume": 0,
      "trades_count": 0,
      "volume": 0,
      "vwap": 0.2154
    },
    {
      "block_trade_buy_volume": 5000,
      "block_trade_sell_volume": 3500,
      "buy_trades_count": 0,
      "buy_volume": 0,
      "close": 0.2156,
      "date": "2025-11-04 11:02:00",
      "days_to_expiry": 324.91527777777776,
      "high": 0.2156,
      "index_price": 103695.66,
      "liquidation_long_volume": null,
      "liquidation_short_volume": null,
      "low": 0.2156,
      "mark_price": 0.2156,
      "open": 0.2156,
      "sell_trades_count": 0,
      "sell_volume": 0,
      "trades_count": 0,
      "volume": 0,
      "vwap": 0.2156
    }
  ],
  "meta": {
    "next_cursor": "eyJtaW51dGUiOiIyMDI1LTExLTA0IDEyOjM5OjAwIn0="
  }
}
GET/api/v1/options/open-interest
$0.10 default
Description

Options data — pay per request

Documentation

Options Open Interest

Aggregates open interest across the selected instrument or currency using the requested resolution.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance, okx, bybit, bullish, derive)",
      "example": "deribit",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name": {
      "description": "Full options instrument identifier (e.g., BTC-24JUL26-68000-C, ETH-25DEC26-4000-P)",
      "example": "BTC-24JUL26-68000-C",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for bucketing results",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [],
  "type": "object"
}
Request schema
{
  "properties": {
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "type": "string"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance, okx, bybit, bullish, derive)",
      "example": "deribit",
      "type": "string"
    },
    "instrument_name": {
      "description": "Full options instrument identifier (e.g., BTC-24JUL26-68000-C, ETH-25DEC26-4000-P)",
      "example": "BTC-24JUL26-68000-C",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for bucketing results",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "type": "string"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    }
  },
  "type": "object"
}
Response schema
{
  "allOf": [
    {
      "properties": {
        "data": {
          "items": {
            "type": "array"
          },
          "type": "array"
        },
        "meta": {
          "properties": {
            "next_cursor": {
              "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,
              "type": "string"
            }
          },
          "required": [
            "next_cursor"
          ],
          "type": "object",
          "x-openapi-ref": "#/components/schemas/PaginationMetaEntity"
        }
      },
      "required": [
        "data",
        "meta"
      ],
      "type": "object",
      "x-openapi-ref": "#/components/schemas/PaginatedResponse"
    },
    {
      "properties": {
        "data": {
          "items": {
            "properties": {
              "currency": {
                "description": "Base currency",
                "example": "BTC",
                "type": "string"
              },
              "date": {
                "description": "Date in ISO 8601 format (UTC)",
                "example": "2024-12-10T00:00:00.000Z",
                "format": "date-time",
                "type": "string"
              },
              "exchange": {
                "description": "Exchange name",
                "example": "deribit",
                "type": "string"
              },
              "instrument_name": {
                "description": "Instrument name",
                "example": "BTC-25DEC26",
                "type": "string"
              },
              "oi_close": {
                "description": "Open interest at time bucket end (base units)",
                "example": 22350.5,
                "type": "number"
              },
              "oi_high": {
                "description": "Highest open interest during time bucket (base units)",
                "example": 22500.3,
                "type": "number"
              },
              "oi_low": {
                "description": "Lowest open interest during time bucket (base units)",
                "example": 21950,
                "type": "number"
              },
              "oi_open": {
                "description": "Open interest at time bucket start (base units)",
                "example": 22000.1,
                "type": "number"
              }
            },
            "required": [
              "date",
              "oi_open",
              "oi_high",
              "oi_low",
              "oi_close"
            ],
            "type": "object",
            "x-openapi-ref": "#/components/schemas/BaseOpenInterestEntity"
          },
          "type": "array"
        }
      }
    }
  ]
}
Example request
{
  "cursor": "test",
  "end": "2026-07-21T10:00:00.000Z",
  "exchange": "deribit",
  "instrument_name": "BTC-24JUL26-68000-C",
  "limit": 100,
  "resolution": "1m",
  "sort_dir": "ASC",
  "start": "2026-07-14T10:00:00.000Z"
}
Example response
{
  "data": [
    {
      "date": "2025-11-04 11:00:00",
      "oi_close": 2.6,
      "oi_high": 2.6,
      "oi_low": 2.6,
      "oi_open": 2.6
    },
    {
      "date": "2025-11-04 11:01:00",
      "oi_close": 2.6,
      "oi_high": 2.6,
      "oi_low": 2.6,
      "oi_open": 2.6
    },
    {
      "date": "2025-11-04 11:02:00",
      "oi_close": 2.6,
      "oi_high": 2.6,
      "oi_low": 2.6,
      "oi_open": 2.6
    }
  ],
  "meta": {
    "next_cursor": "eyJtaW51dGUiOiIyMDI1LTExLTA0IDEyOjM5OjAwIn0="
  }
}
GET/api/v1/options/reference-price
$0.10 default
Description

Options data — pay per request

Documentation

Options Reference Prices

Returns reference price data for options instruments.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance, okx, bybit, bullish, derive)",
      "example": "deribit",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name": {
      "description": "Full options instrument identifier (e.g., BTC-24JUL26-68000-C, ETH-25DEC26-4000-P)",
      "example": "BTC-24JUL26-68000-C",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for bucketing results",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [],
  "type": "object"
}
Request schema
{
  "properties": {
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "type": "string"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance, okx, bybit, bullish, derive)",
      "example": "deribit",
      "type": "string"
    },
    "instrument_name": {
      "description": "Full options instrument identifier (e.g., BTC-24JUL26-68000-C, ETH-25DEC26-4000-P)",
      "example": "BTC-24JUL26-68000-C",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for bucketing results",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "type": "string"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    }
  },
  "type": "object"
}
Response schema
{
  "allOf": [
    {
      "properties": {
        "data": {
          "items": {
            "type": "array"
          },
          "type": "array"
        },
        "meta": {
          "properties": {
            "next_cursor": {
              "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,
              "type": "string"
            }
          },
          "required": [
            "next_cursor"
          ],
          "type": "object",
          "x-openapi-ref": "#/components/schemas/PaginationMetaEntity"
        }
      },
      "required": [
        "data",
        "meta"
      ],
      "type": "object",
      "x-openapi-ref": "#/components/schemas/PaginatedResponse"
    },
    {
      "properties": {
        "data": {
          "type": "array"
        }
      }
    }
  ]
}
Example request
{
  "cursor": "test",
  "end": "2026-07-21T10:00:00.000Z",
  "exchange": "deribit",
  "instrument_name": "BTC-24JUL26-68000-C",
  "limit": 100,
  "resolution": "1m",
  "sort_dir": "ASC",
  "start": "2026-07-14T10:00:00.000Z"
}
Example response
{
  "data": [
    {
      "date": "2025-11-04 11:00:00",
      "days_to_expiry": 324.9166666666667,
      "index_price": 103722.83,
      "mark_price_close": 0.2157,
      "mark_price_high": 0.2162,
      "mark_price_low": 0.2156,
      "mark_price_open": 0.2162,
      "underlying_price": 109227.13
    },
    {
      "date": "2025-11-04 11:01:00",
      "days_to_expiry": 324.91597222222225,
      "index_price": 103639.67,
      "mark_price_close": 0.2154,
      "mark_price_high": 0.2157,
      "mark_price_low": 0.2154,
      "mark_price_open": 0.2156,
      "underlying_price": 109138.04
    },
    {
      "date": "2025-11-04 11:02:00",
      "days_to_expiry": 324.91527777777776,
      "index_price": 103695.66,
      "mark_price_close": 0.2156,
      "mark_price_high": 0.2158,
      "mark_price_low": 0.2153,
      "mark_price_open": 0.2153,
      "underlying_price": 109194.74
    }
  ],
  "meta": {
    "next_cursor": "eyJtaW51dGUiOiIyMDI1LTExLTA0IDEyOjM5OjAwIn0="
  }
}
GET/api/v1/options/snapshot
$0.10 default
Description

Options data — pay per request

Documentation

Options Snapshot

Returns a snapshot of all options instruments for a given exchange and currency at a single minute. If no date is provided, returns the latest available snapshot. Currency is required due to the large dataset size.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "currency": {
      "description": "Base currency (e.g., BTC, ETH). Required for options due to large dataset size.",
      "example": "BTC",
      "required": true,
      "type": "string",
      "x-parameter-location": "query"
    },
    "date": {
      "description": "Exact date/time for the snapshot in ISO 8601 format (UTC). If omitted, returns the latest available snapshot.",
      "example": "2026-01-20T10:00:00Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance, okx, bybit, bullish, derive). Required.",
      "example": "deribit",
      "required": true,
      "type": "string",
      "x-parameter-location": "query"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for the snapshot. At 1m (default), returns raw minute-level data. At higher resolutions (5m, 1h, etc.), data is aggregated into the specified bucket.",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [
    "exchange",
    "currency"
  ],
  "type": "object"
}
Request schema
{
  "properties": {
    "currency": {
      "description": "Base currency (e.g., BTC, ETH). Required for options due to large dataset size.",
      "example": "BTC",
      "type": "string"
    },
    "date": {
      "description": "Exact date/time for the snapshot in ISO 8601 format (UTC). If omitted, returns the latest available snapshot.",
      "example": "2026-01-20T10:00:00Z",
      "format": "date-time",
      "type": "string"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance, okx, bybit, bullish, derive). Required.",
      "example": "deribit",
      "type": "string"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for the snapshot. At 1m (default), returns raw minute-level data. At higher resolutions (5m, 1h, etc.), data is aggregated into the specified bucket.",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "type": "string"
    }
  },
  "required": [
    "exchange",
    "currency"
  ],
  "type": "object"
}
Example request
{
  "currency": "BTC",
  "date": "2026-01-20T10:00:00Z",
  "exchange": "deribit",
  "resolution": "1m"
}
Example response
{
  "data": [
    {
      "ask_iv": 48.87,
      "ask_price": 0.22,
      "ask_size": 31.3,
      "bid_ask_spread": 0.0085,
      "bid_iv": 46.4,
      "bid_price": 0.2115,
      "bid_size": 19.3,
      "currency": "BTC",
      "date": "2025-11-04 11:00:00",
      "exchange": "deribit",
      "index_price": 103722.83,
      "instrument_name": "BTC-24JUL26-68000-C",
      "iv_spread": 2.47,
      "mark_iv": 47.62,
      "mark_price": 0.2157,
      "oi": 2.6,
      "volume_usd_24h": 29521.78
    },
    {
      "ask_iv": 54.3,
      "ask_price": 0.0555,
      "ask_size": 15.4,
      "bid_ask_spread": 0.0025,
      "bid_iv": 52.1,
      "bid_price": 0.053,
      "bid_size": 10.1,
      "currency": "BTC",
      "date": "2025-11-04 11:00:00",
      "exchange": "deribit",
      "index_price": 103722.83,
      "instrument_name": "BTC-24JUL26-68000-C",
      "iv_spread": 2.2,
      "mark_iv": 53.15,
      "mark_price": 0.0542,
      "oi": 5.2,
      "volume_usd_24h": 12340.5
    }
  ],
  "meta": {
    "minute": "2025-11-04 11:00:00"
  }
}
GET/api/v1/options/ticker-history
$0.10 default
Description

Options data — pay per request

Documentation

Options Ticker History

Returns historical ticker data for options instruments.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance, okx, bybit, bullish, derive)",
      "example": "deribit",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name": {
      "description": "Full options instrument identifier (e.g., BTC-24JUL26-68000-C, ETH-25DEC26-4000-P)",
      "example": "BTC-24JUL26-68000-C",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for bucketing results",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [],
  "type": "object"
}
Request schema
{
  "properties": {
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "type": "string"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance, okx, bybit, bullish, derive)",
      "example": "deribit",
      "type": "string"
    },
    "instrument_name": {
      "description": "Full options instrument identifier (e.g., BTC-24JUL26-68000-C, ETH-25DEC26-4000-P)",
      "example": "BTC-24JUL26-68000-C",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for bucketing results",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "type": "string"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    }
  },
  "type": "object"
}
Response schema
{
  "allOf": [
    {
      "properties": {
        "data": {
          "items": {
            "type": "array"
          },
          "type": "array"
        },
        "meta": {
          "properties": {
            "next_cursor": {
              "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,
              "type": "string"
            }
          },
          "required": [
            "next_cursor"
          ],
          "type": "object",
          "x-openapi-ref": "#/components/schemas/PaginationMetaEntity"
        }
      },
      "required": [
        "data",
        "meta"
      ],
      "type": "object",
      "x-openapi-ref": "#/components/schemas/PaginatedResponse"
    },
    {
      "properties": {
        "data": {
          "type": "array"
        }
      }
    }
  ]
}
Example request
{
  "cursor": "test",
  "end": "2026-07-21T10:00:00.000Z",
  "exchange": "deribit",
  "instrument_name": "BTC-24JUL26-68000-C",
  "limit": 100,
  "resolution": "1m",
  "sort_dir": "ASC",
  "start": "2026-07-14T10:00:00.000Z"
}
Example response
{
  "data": [
    {
      "ask_iv": 48.87,
      "ask_price": 0.22,
      "ask_size": 31.3,
      "bid_ask_spread": 0.008500000000000008,
      "bid_iv": 46.4,
      "bid_price": 0.2115,
      "bid_size": 19.3,
      "date": "2025-11-04 11:00:00",
      "index_price": 103722.83,
      "iv_spread": 2.469999999999999,
      "mark_iv": 47.62,
      "mark_price": 0.2157,
      "oi": 2.6,
      "volume_usd_24h": 29521.78
    },
    {
      "ask_iv": 48.98,
      "ask_price": 0.22,
      "ask_size": 31.3,
      "bid_ask_spread": 0.008500000000000008,
      "bid_iv": 46.51,
      "bid_price": 0.2115,
      "bid_size": 19.3,
      "date": "2025-11-04 11:01:00",
      "index_price": 103639.67,
      "iv_spread": 2.469999999999999,
      "mark_iv": 47.62,
      "mark_price": 0.2154,
      "oi": 2.6,
      "volume_usd_24h": 29521.78
    },
    {
      "ask_iv": 48.62,
      "ask_price": 0.219,
      "ask_size": 19.6,
      "bid_ask_spread": 0.0050000000000000044,
      "bid_iv": 47.17,
      "bid_price": 0.214,
      "bid_size": 0.3,
      "date": "2025-11-04 11:02:00",
      "index_price": 103695.66,
      "iv_spread": 1.4499999999999955,
      "mark_iv": 47.62,
      "mark_price": 0.2156,
      "oi": 2.6,
      "volume_usd_24h": 29521.78
    }
  ],
  "meta": {
    "next_cursor": "eyJtaW51dGUiOiIyMDI1LTExLTA0IDEyOjM5OjAwIn0="
  }
}
GET/api/v1/options/trades
$0.10 default
Description

Options data — pay per request

Documentation

Options Trade History

Returns 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. Additional filters: min_premium_usd, min_notional, direction, strategy, block_only, opening_only, option_type, maturity, sort, sort_dir.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "block_only": {
      "default": false,
      "description": "If true, only return trades with a block_trade_id (block trades).",
      "required": false,
      "type": "boolean",
      "x-parameter-location": "query"
    },
    "currency": {
      "description": "Base currency (e.g. BTC, ETH). Returns trades across ALL instruments for this currency. Either currency or instrument_name is required.",
      "example": "BTC",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "direction": {
      "description": "Filter by trade direction (aggressor side)",
      "enum": [
        "buy",
        "sell"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance)",
      "example": "deribit",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name": {
      "description": "Full options instrument identifier (e.g., BTC-24JUL26-68000-C). Either instrument_name or currency is required.",
      "example": "BTC-24JUL26-68000-C",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "maturity": {
      "description": "Filter by maturity date (e.g. 25DEC26)",
      "example": "25DEC26",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "min_notional": {
      "description": "Minimum notional value in USD.",
      "example": 10000,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "min_premium_usd": {
      "description": "Minimum premium in USD. Filters out dust trades.",
      "example": 1000,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "opening_only": {
      "default": false,
      "description": "If true, only return trades where strategy starts with \"Opened\" (new positions).",
      "required": false,
      "type": "boolean",
      "x-parameter-location": "query"
    },
    "option_type": {
      "description": "Filter by option type: C (call) or P (put)",
      "enum": [
        "C",
        "P"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "sort": {
      "default": "timestamp",
      "description": "Sort field. Default: timestamp.",
      "enum": [
        "timestamp",
        "premium_usd",
        "notional",
        "amount"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "sort_dir": {
      "default": "ASC",
      "description": "Sort direction. Defaults to DESC for currency-level queries (newest/largest first), ASC for instrument-level queries.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "strategy": {
      "description": "Filter by strategy label. Accepts comma-separated values (e.g. SHORT_CALL,LONG_PUT).",
      "enum": [
        "BEAR_CALL_SPREAD",
        "BEAR_DIAGONAL_SPREAD (Calls)",
        "BEAR_DIAGONAL_SPREAD (Puts)",
        "BEAR_PUT_SPREAD",
        "BOX_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/DOWN",
        "CALL_ROLL_FORWARD/UP",
        "COMBO_CALL_BUTTERFLY",
        "COMBO_CALL_CALENDAR",
        "COMBO_CALL_DIAGONAL",
        "COMBO_CALL_RATIO_SPREAD_1X2",
        "COMBO_CALL_RATIO_SPREAD_1X3",
        "COMBO_CALL_SPREAD",
        "COMBO_IRON_CONDOR",
        "COMBO_PUT_CALENDAR",
        "COMBO_PUT_DIAGONAL",
        "COMBO_PUT_RATIO_SPREAD_1X2",
        "COMBO_PUT_RATIO_SPREAD_1X3",
        "COMBO_PUT_SPREAD",
        "COMBO_REVERSAL",
        "COMBO_RISK_REVERSAL",
        "COMBO_STRANGLE",
        "CUSTOM_STRATEGY",
        "Close_CALL/Open_PUT",
        "Closed BULL_CALL_SPREAD",
        "Closed BULL_DIAGONAL_SPREAD (Puts)",
        "Closed COMBO_CALL_DIAGONAL",
        "Closed COMBO_CALL_SPREAD",
        "Closed COMBO_PUT_DIAGONAL",
        "Closed COMBO_PUT_SPREAD",
        "Closed HEDGED_OPTIONS_STRATEGY",
        "Closed LONG_CALL",
        "Closed LONG_PUT",
        "Closed LONG_RATIO_CALL_SPREAD",
        "Closed LONG_STRADDLE",
        "Closed LONG_STRANGLE",
        "Closed SHORT_CALL",
        "Closed SHORT_PROTECTIVE_PUT_WITH_FUTURE",
        "Closed SHORT_PUT",
        "Closed SHORT_RATIO_CALL_SPREAD",
        "HEDGED_OPTIONS_STRATEGY",
        "LONG_CALL",
        "LONG_CALL_BUTTERFLY",
        "LONG_CALL_CONDOR",
        "LONG_CALL_LADDER",
        "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 BULL_CALL_SPREAD",
        "Opened BULL_PUT_SPREAD",
        "Opened COMBO_CALL_DIAGONAL",
        "Opened COMBO_CALL_RATIO_SPREAD_1X2",
        "Opened COMBO_CALL_SPREAD",
        "Opened COMBO_IRON_CONDOR",
        "Opened COMBO_PUT_BUTTERFLY",
        "Opened COMBO_PUT_CALENDAR",
        "Opened COMBO_PUT_DIAGONAL",
        "Opened COMBO_PUT_SPREAD",
        "Opened COMBO_RISK_REVERSAL",
        "Opened COMBO_STRANGLE",
        "Opened CUSTOM_STRATEGY",
        "Opened LONG_CALL",
        "Opened LONG_IRON_CONDOR",
        "Opened LONG_PUT",
        "Opened LONG_PUT_BUTTERFLY",
        "Opened LONG_RATIO_CALL_SPREAD",
        "Opened LONG_RISK_REVERSAL",
        "Opened LONG_STRADDLE",
        "Opened LONG_STRANGLE",
        "Opened PROTECTIVE_PUT_WITH_FUTURE",
        "Opened PUT_CALENDAR",
        "Opened SHORT_CALL",
        "Opened SHORT_COLLAR_WITH_FUTURE",
        "Opened SHORT_COVERED_CALL_WITH_FUTURE",
        "Opened SHORT_PUT",
        "Opened SHORT_RATIO_CALL_SPREAD",
        "Opened SHORT_RATIO_PUT_SPREAD",
        "Opened SHORT_STRADDLE",
        "Opened SHORT_STRANGLE",
        "PROTECTIVE_PUT_WITH_FUTURE",
        "PUT_CALENDAR",
        "PUT_ROLL_BACK/DOWN",
        "PUT_ROLL_BACK/UP",
        "REVERSE_CALL_CALENDAR",
        "REVERSE_PUT_CALENDAR",
        "ROLL_BACK",
        "ROLL_UP",
        "SHORT_CALL",
        "SHORT_CALL_BUTTERFLY",
        "SHORT_CALL_CONDOR",
        "SHORT_CALL_LADDER",
        "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"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "top_n": {
      "description": "Return top N trades by the sort field (DESC). Overrides limit and sort_dir. No pagination cursor returned.",
      "example": 20,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    }
  },
  "required": [],
  "type": "object"
}
Request schema
{
  "properties": {
    "block_only": {
      "default": false,
      "description": "If true, only return trades with a block_trade_id (block trades).",
      "type": "boolean"
    },
    "currency": {
      "description": "Base currency (e.g. BTC, ETH). Returns trades across ALL instruments for this currency. Either currency or instrument_name is required.",
      "example": "BTC",
      "type": "string"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "type": "string"
    },
    "direction": {
      "description": "Filter by trade direction (aggressor side)",
      "enum": [
        "buy",
        "sell"
      ],
      "type": "string"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance)",
      "example": "deribit",
      "type": "string"
    },
    "instrument_name": {
      "description": "Full options instrument identifier (e.g., BTC-24JUL26-68000-C). Either instrument_name or currency is required.",
      "example": "BTC-24JUL26-68000-C",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "maturity": {
      "description": "Filter by maturity date (e.g. 25DEC26)",
      "example": "25DEC26",
      "type": "string"
    },
    "min_notional": {
      "description": "Minimum notional value in USD.",
      "example": 10000,
      "type": "number"
    },
    "min_premium_usd": {
      "description": "Minimum premium in USD. Filters out dust trades.",
      "example": 1000,
      "type": "number"
    },
    "opening_only": {
      "default": false,
      "description": "If true, only return trades where strategy starts with \"Opened\" (new positions).",
      "type": "boolean"
    },
    "option_type": {
      "description": "Filter by option type: C (call) or P (put)",
      "enum": [
        "C",
        "P"
      ],
      "type": "string"
    },
    "sort": {
      "default": "timestamp",
      "description": "Sort field. Default: timestamp.",
      "enum": [
        "timestamp",
        "premium_usd",
        "notional",
        "amount"
      ],
      "type": "string"
    },
    "sort_dir": {
      "default": "ASC",
      "description": "Sort direction. Defaults to DESC for currency-level queries (newest/largest first), ASC for instrument-level queries.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "strategy": {
      "description": "Filter by strategy label. Accepts comma-separated values (e.g. SHORT_CALL,LONG_PUT).",
      "example": "",
      "type": "string"
    },
    "top_n": {
      "description": "Return top N trades by the sort field (DESC). Overrides limit and sort_dir. No pagination cursor returned.",
      "example": 20,
      "type": "number"
    }
  },
  "type": "object"
}
Response schema
{
  "allOf": [
    {
      "properties": {
        "data": {
          "items": {
            "type": "array"
          },
          "type": "array"
        },
        "meta": {
          "properties": {
            "next_cursor": {
              "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,
              "type": "string"
            }
          },
          "required": [
            "next_cursor"
          ],
          "type": "object",
          "x-openapi-ref": "#/components/schemas/PaginationMetaEntity"
        }
      },
      "required": [
        "data",
        "meta"
      ],
      "type": "object",
      "x-openapi-ref": "#/components/schemas/PaginatedResponse"
    },
    {
      "properties": {
        "data": {
          "items": {
            "properties": {
              "amount": {
                "description": "Trade amount/size",
                "example": 1.5,
                "type": "number"
              },
              "block_trade_id": {
                "description": "Block trade identifier if applicable",
                "example": "block_123",
                "type": "string"
              },
              "combo_id": {
                "description": "Combo trade identifier if applicable",
                "example": "combo_123",
                "type": "string"
              },
              "combo_trade_id": {
                "description": "Combo trade ID if part of combo",
                "example": "combo_trade_123",
                "type": "string"
              },
              "date": {
                "description": "ISO 8601 formatted date string",
                "example": "2023-06-15T14:30:00.000Z",
                "type": "string"
              },
              "direction": {
                "description": "Trade direction",
                "enum": [
                  "buy",
                  "sell"
                ],
                "example": "buy",
                "type": "string"
              },
              "index_price": {
                "description": "Index price at time of trade",
                "example": 45010,
                "nullable": true,
                "type": "object"
              },
              "instrument_name": {
                "description": "Instrument identifier",
                "example": "BTC-25DEC26",
                "type": "string"
              },
              "oi_before": {
                "description": "Open interest before trade",
                "example": 9900,
                "nullable": true,
                "type": "object"
              },
              "oi_change": {
                "description": "Change in open interest",
                "example": 100,
                "nullable": true,
                "type": "object"
              },
              "open_interest": {
                "description": "Open interest after trade",
                "example": 10000,
                "nullable": true,
                "type": "object"
              },
              "price": {
                "description": "Trade execution price",
                "example": 45000.5,
                "type": "number"
              },
              "strategy": {
                "description": "Trading strategy identifier",
                "example": "strategy_1",
                "type": "string"
              },
              "tick_direction": {
                "description": "Tick direction indicator",
                "example": 1,
                "nullable": true,
                "type": "object"
              },
              "timestamp": {
                "description": "Unix timestamp in milliseconds",
                "example": 1234567890123,
                "type": "number"
              },
              "trade_id": {
                "description": "Unique trade identifier",
                "example": "trade_123456",
                "type": "string"
              }
            },
            "required": [
              "instrument_name",
              "timestamp",
              "date",
              "trade_id",
              "direction",
              "amount",
              "price"
            ],
            "type": "object",
            "x-openapi-ref": "#/components/schemas/OptionsTradeEntity"
          },
          "type": "array"
        }
      }
    }
  ]
}
Example request
{
  "block_only": false,
  "currency": "BTC",
  "cursor": "test",
  "direction": "buy",
  "end": "2026-07-21T10:00:00.000Z",
  "exchange": "deribit",
  "instrument_name": "BTC-24JUL26-68000-C",
  "limit": 100,
  "maturity": "25DEC26",
  "min_notional": 10000,
  "min_premium_usd": 1000,
  "opening_only": false,
  "option_type": "C",
  "sort": "timestamp",
  "sort_dir": "ASC",
  "start": "2026-07-14T10:00:00.000Z",
  "strategy": "",
  "top_n": 20
}
Example response
{
  "data": [
    {
      "amount": 0.1,
      "ask_iv_change": 0,
      "ask_price": 0.269,
      "ask_price_change": 0,
      "ask_size": 2.8,
      "ask_size_change": 0,
      "bid_iv_change": 0,
      "bid_price": 0.267,
      "bid_price_change": -0.002,
      "bid_size": 9.7,
      "bid_size_change": 0,
      "block_trade_id": "",
      "combo_id": "",
      "combo_trade_id": "",
      "date": "2025-10-11 12:45:49",
      "days_to_expiry": 359.9834,
      "delta": -0.0694643,
      "direction": "sell",
      "gamma": -6.9e-7,
      "index_price": 113610.41,
      "instrument_name": "BTC-25SEP26-100000-C",
      "iv": 44.95,
      "mark_price": 0.2669,
      "maturity": "25SEP26",
      "notional": 11361.04,
      "oi_before": null,
      "oi_change": 0.1,
      "open_interest": 0.1,
      "option_type": "C",
      "premium": 0.0267,
      "premium_usd": 3033.4,
      "price": 0.267,
      "strategy": "Opened SHORT_CALL",
      "strike": 100000,
      "theta": 2.468719,
      "tick_direction": 1,
      "timestamp": 1759220633312,
      "trade_id": "387076415",
      "vega": -39.54125
    },
    {
      "amount": 0.1,
      "ask_iv_change": 0,
      "ask_price": 0.2675,
      "ask_price_change": 0,
      "ask_size": 27.1,
      "ask_size_change": 0,
      "bid_iv_change": 0,
      "bid_price": 0.261,
      "bid_price_change": -0.0035,
      "bid_size": 18.1,
      "bid_size_change": 0,
      "block_trade_id": "",
      "combo_id": "",
      "combo_trade_id": "",
      "date": "2025-10-11 12:45:49",
      "days_to_expiry": 348.7691,
      "delta": -0.0683262,
      "direction": "sell",
      "gamma": -7e-7,
      "index_price": 112021.37,
      "instrument_name": "BTC-25SEP26-100000-C",
      "iv": 46.9,
      "mark_price": 0.2604,
      "maturity": "25SEP26",
      "notional": 11202.14,
      "oi_before": 0.1,
      "oi_change": 0.1,
      "open_interest": 0.2,
      "option_type": "C",
      "premium": 0.0261,
      "premium_usd": 2923.76,
      "price": 0.261,
      "strategy": "Opened SHORT_CALL",
      "strike": 100000,
      "theta": 2.621582,
      "tick_direction": 2,
      "timestamp": 1760189549998,
      "trade_id": "390187993",
      "vega": -38.99059
    },
    {
      "amount": 0.1,
      "ask_iv_change": 0,
      "ask_price": 0.261,
      "ask_price_change": 0,
      "ask_size": 2.2,
      "ask_size_change": 0,
      "bid_iv_change": 0,
      "bid_price": 0.2595,
      "bid_price_change": -0.0035,
      "bid_size": 2.2,
      "bid_size_change": 0,
      "block_trade_id": "",
      "combo_id": "",
      "combo_trade_id": "",
      "date": "2025-10-11 12:45:49",
      "days_to_expiry": 345.6238,
      "delta": -0.0682762,
      "direction": "sell",
      "gamma": -7e-7,
      "index_price": 111949.78,
      "instrument_name": "BTC-25SEP26-100000-C",
      "iv": 47.14,
      "mark_price": 0.2587,
      "maturity": "25SEP26",
      "notional": 11194.98,
      "oi_before": 0.2,
      "oi_change": 0.1,
      "open_interest": 0.3,
      "option_type": "C",
      "premium": 0.026,
      "premium_usd": 2905.1,
      "price": 0.2595,
      "strategy": "Opened SHORT_CALL",
      "strike": 100000,
      "theta": 2.647056,
      "tick_direction": 2,
      "timestamp": 1760461299893,
      "trade_id": "391006860",
      "vega": -38.81525
    }
  ],
  "meta": {
    "next_cursor": "eyJ0aW1lc3RhbXAiOjE3NjM0Mzk0NTc1NTksInRyYWRlX2lkIjoiMzk4OTU3NDk3In0="
  }
}
GET/api/v1/options/trades/summary
$0.10 default
Description

Options data — pay per request

Documentation

Options Trades Summary

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.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "block_only": {
      "default": false,
      "description": "If true, only include block trades.",
      "required": false,
      "type": "boolean",
      "x-parameter-location": "query"
    },
    "currency": {
      "description": "Base currency (e.g. BTC, ETH)",
      "example": "BTC",
      "required": true,
      "type": "string",
      "x-parameter-location": "query"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "direction": {
      "description": "Filter by trade direction",
      "enum": [
        "buy",
        "sell"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit)",
      "example": "deribit",
      "required": true,
      "type": "string",
      "x-parameter-location": "query"
    },
    "group_by": {
      "description": "Axis to group results by",
      "enum": [
        "exchange",
        "instrument_name",
        "strike",
        "maturity",
        "option_type",
        "direction",
        "strategy"
      ],
      "required": true,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "maturity": {
      "description": "Filter by maturity date (e.g. 25DEC26)",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "min_notional": {
      "description": "Minimum notional value in USD.",
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "min_premium_usd": {
      "description": "Minimum premium in USD. Filters dust trades.",
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "opening_only": {
      "default": false,
      "description": "If true, only include opening trades (strategy starts with Opened).",
      "required": false,
      "type": "boolean",
      "x-parameter-location": "query"
    },
    "option_type": {
      "description": "Filter by option type: C (call) or P (put)",
      "enum": [
        "C",
        "P"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "strategy": {
      "description": "Filter by strategy label. Accepts comma-separated values.",
      "enum": [
        "BEAR_CALL_SPREAD",
        "BEAR_DIAGONAL_SPREAD (Calls)",
        "BEAR_DIAGONAL_SPREAD (Puts)",
        "BEAR_PUT_SPREAD",
        "BOX_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/DOWN",
        "CALL_ROLL_FORWARD/UP",
        "COMBO_CALL_BUTTERFLY",
        "COMBO_CALL_CALENDAR",
        "COMBO_CALL_DIAGONAL",
        "COMBO_CALL_RATIO_SPREAD_1X2",
        "COMBO_CALL_RATIO_SPREAD_1X3",
        "COMBO_CALL_SPREAD",
        "COMBO_IRON_CONDOR",
        "COMBO_PUT_CALENDAR",
        "COMBO_PUT_DIAGONAL",
        "COMBO_PUT_RATIO_SPREAD_1X2",
        "COMBO_PUT_RATIO_SPREAD_1X3",
        "COMBO_PUT_SPREAD",
        "COMBO_REVERSAL",
        "COMBO_RISK_REVERSAL",
        "COMBO_STRANGLE",
        "CUSTOM_STRATEGY",
        "Close_CALL/Open_PUT",
        "Closed BULL_CALL_SPREAD",
        "Closed BULL_DIAGONAL_SPREAD (Puts)",
        "Closed COMBO_CALL_DIAGONAL",
        "Closed COMBO_CALL_SPREAD",
        "Closed COMBO_PUT_DIAGONAL",
        "Closed COMBO_PUT_SPREAD",
        "Closed HEDGED_OPTIONS_STRATEGY",
        "Closed LONG_CALL",
        "Closed LONG_PUT",
        "Closed LONG_RATIO_CALL_SPREAD",
        "Closed LONG_STRADDLE",
        "Closed LONG_STRANGLE",
        "Closed SHORT_CALL",
        "Closed SHORT_PROTECTIVE_PUT_WITH_FUTURE",
        "Closed SHORT_PUT",
        "Closed SHORT_RATIO_CALL_SPREAD",
        "HEDGED_OPTIONS_STRATEGY",
        "LONG_CALL",
        "LONG_CALL_BUTTERFLY",
        "LONG_CALL_CONDOR",
        "LONG_CALL_LADDER",
        "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 BULL_CALL_SPREAD",
        "Opened BULL_PUT_SPREAD",
        "Opened COMBO_CALL_DIAGONAL",
        "Opened COMBO_CALL_RATIO_SPREAD_1X2",
        "Opened COMBO_CALL_SPREAD",
        "Opened COMBO_IRON_CONDOR",
        "Opened COMBO_PUT_BUTTERFLY",
        "Opened COMBO_PUT_CALENDAR",
        "Opened COMBO_PUT_DIAGONAL",
        "Opened COMBO_PUT_SPREAD",
        "Opened COMBO_RISK_REVERSAL",
        "Opened COMBO_STRANGLE",
        "Opened CUSTOM_STRATEGY",
        "Opened LONG_CALL",
        "Opened LONG_IRON_CONDOR",
        "Opened LONG_PUT",
        "Opened LONG_PUT_BUTTERFLY",
        "Opened LONG_RATIO_CALL_SPREAD",
        "Opened LONG_RISK_REVERSAL",
        "Opened LONG_STRADDLE",
        "Opened LONG_STRANGLE",
        "Opened PROTECTIVE_PUT_WITH_FUTURE",
        "Opened PUT_CALENDAR",
        "Opened SHORT_CALL",
        "Opened SHORT_COLLAR_WITH_FUTURE",
        "Opened SHORT_COVERED_CALL_WITH_FUTURE",
        "Opened SHORT_PUT",
        "Opened SHORT_RATIO_CALL_SPREAD",
        "Opened SHORT_RATIO_PUT_SPREAD",
        "Opened SHORT_STRADDLE",
        "Opened SHORT_STRANGLE",
        "PROTECTIVE_PUT_WITH_FUTURE",
        "PUT_CALENDAR",
        "PUT_ROLL_BACK/DOWN",
        "PUT_ROLL_BACK/UP",
        "REVERSE_CALL_CALENDAR",
        "REVERSE_PUT_CALENDAR",
        "ROLL_BACK",
        "ROLL_UP",
        "SHORT_CALL",
        "SHORT_CALL_BUTTERFLY",
        "SHORT_CALL_CONDOR",
        "SHORT_CALL_LADDER",
        "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"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [
    "exchange",
    "currency",
    "group_by"
  ],
  "type": "object"
}
Request schema
{
  "properties": {
    "block_only": {
      "default": false,
      "description": "If true, only include block trades.",
      "type": "boolean"
    },
    "currency": {
      "description": "Base currency (e.g. BTC, ETH)",
      "example": "BTC",
      "type": "string"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "type": "string"
    },
    "direction": {
      "description": "Filter by trade direction",
      "enum": [
        "buy",
        "sell"
      ],
      "type": "string"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit)",
      "example": "deribit",
      "type": "string"
    },
    "group_by": {
      "description": "Axis to group results by",
      "enum": [
        "exchange",
        "instrument_name",
        "strike",
        "maturity",
        "option_type",
        "direction",
        "strategy"
      ],
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "maturity": {
      "description": "Filter by maturity date (e.g. 25DEC26)",
      "type": "string"
    },
    "min_notional": {
      "description": "Minimum notional value in USD.",
      "type": "number"
    },
    "min_premium_usd": {
      "description": "Minimum premium in USD. Filters dust trades.",
      "type": "number"
    },
    "opening_only": {
      "default": false,
      "description": "If true, only include opening trades (strategy starts with Opened).",
      "type": "boolean"
    },
    "option_type": {
      "description": "Filter by option type: C (call) or P (put)",
      "enum": [
        "C",
        "P"
      ],
      "type": "string"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "strategy": {
      "description": "Filter by strategy label. Accepts comma-separated values.",
      "type": "string"
    }
  },
  "required": [
    "exchange",
    "currency",
    "group_by"
  ],
  "type": "object"
}
Example request
{
  "block_only": false,
  "currency": "BTC",
  "cursor": "test",
  "direction": "buy",
  "end": "2026-07-21T10:00:00.000Z",
  "exchange": "deribit",
  "group_by": "exchange",
  "limit": 100,
  "maturity": "test",
  "min_notional": 1,
  "min_premium_usd": 1,
  "opening_only": false,
  "option_type": "C",
  "sort_dir": "ASC",
  "start": "2026-07-14T10:00:00.000Z",
  "strategy": "test"
}
Example response
{
  "data": [
    {
      "block_trade_count": 3,
      "buy_premium_usd": 750000,
      "buy_volume": 300.1,
      "group_key": "100000",
      "net_delta": 45.2,
      "net_gamma": 0.003,
      "net_oi_change": 120.5,
      "net_vega": 12500,
      "notional": 47500000,
      "premium_usd": 1250000,
      "sell_premium_usd": 500000,
      "sell_volume": 200.1,
      "trade_count": 85,
      "volume": 500.2
    }
  ],
  "metadata": {
    "group_by": "strike",
    "total_trades": 85,
    "total_volume": 500.2
  }
}
GET/api/v1/options/vol-surface/by-expiry
$0.10 default
Description

Options data — pay per request

Documentation

Vol Surface By Expiry

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.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "currency": {
      "description": "Base currency (e.g., BTC, ETH). Required for vol-surface queries.",
      "example": "BTC",
      "required": true,
      "type": "string",
      "x-parameter-location": "query"
    },
    "cursor": {
      "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.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "date": {
      "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.",
      "example": "2026-01-20T10:00:00Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "End date for time-series mode in ISO 8601 format (UTC)",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance, okx, bybit, bullish, derive). Required.",
      "example": "deribit",
      "required": true,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of distinct time buckets to return (1-1000). Only used in time-series mode (when start/end provided).",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for aggregation. At 1m (default), returns raw minute-level data. At higher resolutions (5m, 1h, etc.), data is aggregated into the specified bucket.",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Start date for time-series mode in ISO 8601 format (UTC). When provided, returns paginated snapshots over time instead of a single snapshot.",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [
    "exchange",
    "currency"
  ],
  "type": "object"
}
Request schema
{
  "properties": {
    "currency": {
      "description": "Base currency (e.g., BTC, ETH). Required for vol-surface queries.",
      "example": "BTC",
      "type": "string"
    },
    "cursor": {
      "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.",
      "type": "string"
    },
    "date": {
      "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.",
      "example": "2026-01-20T10:00:00Z",
      "format": "date-time",
      "type": "string"
    },
    "end": {
      "description": "End date for time-series mode in ISO 8601 format (UTC)",
      "format": "date-time",
      "type": "string"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance, okx, bybit, bullish, derive). Required.",
      "example": "deribit",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of distinct time buckets to return (1-1000). Only used in time-series mode (when start/end provided).",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for aggregation. At 1m (default), returns raw minute-level data. At higher resolutions (5m, 1h, etc.), data is aggregated into the specified bucket.",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "type": "string"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "start": {
      "description": "Start date for time-series mode in ISO 8601 format (UTC). When provided, returns paginated snapshots over time instead of a single snapshot.",
      "format": "date-time",
      "type": "string"
    }
  },
  "required": [
    "exchange",
    "currency"
  ],
  "type": "object"
}
Example request
{
  "currency": "BTC",
  "cursor": "test",
  "date": "2026-01-20T10:00:00Z",
  "end": "2026-07-23T12:00:00Z",
  "exchange": "deribit",
  "limit": 100,
  "resolution": "1m",
  "sort_dir": "ASC",
  "start": "2026-07-23T12:00:00Z"
}
Example response
{
  "data": [
    {
      "atm_iv": 47.62,
      "butterfly_10d": 1.58,
      "butterfly_25d": 0.33,
      "call_10d_iv": 40.1,
      "call_25d_iv": 43.8,
      "currency": "BTC",
      "date": "2025-11-04T11:00:00.000Z",
      "days_to_expiry": 25.5,
      "exchange": "deribit",
      "maturity": "29NOV25",
      "put_10d_iv": 58.3,
      "put_25d_iv": 52.1,
      "skew_10d": 18.2,
      "skew_25d": 8.3,
      "underlying_price": 103722.83
    },
    {
      "atm_iv": 52.1,
      "butterfly_10d": 1.75,
      "butterfly_25d": 0.55,
      "call_10d_iv": 44.2,
      "call_25d_iv": 48.5,
      "currency": "BTC",
      "date": "2025-11-04T11:00:00.000Z",
      "days_to_expiry": 53.5,
      "exchange": "deribit",
      "maturity": "27DEC25",
      "put_10d_iv": 63.5,
      "put_25d_iv": 56.8,
      "skew_10d": 19.3,
      "skew_25d": 8.3,
      "underlying_price": 103722.83
    },
    {
      "atm_iv": 55.3,
      "butterfly_10d": 1.55,
      "butterfly_25d": 0.35,
      "call_10d_iv": 47.5,
      "call_25d_iv": 51.2,
      "currency": "BTC",
      "date": "2025-11-04T11:00:00.000Z",
      "days_to_expiry": 144.5,
      "exchange": "deribit",
      "maturity": "28MAR26",
      "put_10d_iv": 66.2,
      "put_25d_iv": 60.1,
      "skew_10d": 18.7,
      "skew_25d": 8.9,
      "underlying_price": 103722.83
    }
  ],
  "meta": {
    "date": "2025-11-04T11:00:00.000Z",
    "next_date": "2025-11-04T11:01:00.000Z"
  }
}
GET/api/v1/options/vol-surface/by-tenor
$0.10 default
Description

Options data — pay per request

Documentation

Vol Surface By Tenor

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.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "currency": {
      "description": "Base currency (e.g., BTC, ETH). Required for vol-surface queries.",
      "example": "BTC",
      "required": true,
      "type": "string",
      "x-parameter-location": "query"
    },
    "cursor": {
      "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.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "date": {
      "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.",
      "example": "2026-01-20T10:00:00Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "End date for time-series mode in ISO 8601 format (UTC)",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance, okx, bybit, bullish, derive). Required.",
      "example": "deribit",
      "required": true,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of distinct time buckets to return (1-1000). Only used in time-series mode (when start/end provided).",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for aggregation. At 1m (default), returns raw minute-level data. At higher resolutions (5m, 1h, etc.), data is aggregated into the specified bucket.",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Start date for time-series mode in ISO 8601 format (UTC). When provided, returns paginated snapshots over time instead of a single snapshot.",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [
    "exchange",
    "currency"
  ],
  "type": "object"
}
Request schema
{
  "properties": {
    "currency": {
      "description": "Base currency (e.g., BTC, ETH). Required for vol-surface queries.",
      "example": "BTC",
      "type": "string"
    },
    "cursor": {
      "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.",
      "type": "string"
    },
    "date": {
      "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.",
      "example": "2026-01-20T10:00:00Z",
      "format": "date-time",
      "type": "string"
    },
    "end": {
      "description": "End date for time-series mode in ISO 8601 format (UTC)",
      "format": "date-time",
      "type": "string"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance, okx, bybit, bullish, derive). Required.",
      "example": "deribit",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of distinct time buckets to return (1-1000). Only used in time-series mode (when start/end provided).",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for aggregation. At 1m (default), returns raw minute-level data. At higher resolutions (5m, 1h, etc.), data is aggregated into the specified bucket.",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "type": "string"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "start": {
      "description": "Start date for time-series mode in ISO 8601 format (UTC). When provided, returns paginated snapshots over time instead of a single snapshot.",
      "format": "date-time",
      "type": "string"
    }
  },
  "required": [
    "exchange",
    "currency"
  ],
  "type": "object"
}
Example request
{
  "currency": "BTC",
  "cursor": "test",
  "date": "2026-01-20T10:00:00Z",
  "end": "2026-07-23T12:00:00Z",
  "exchange": "deribit",
  "limit": 100,
  "resolution": "1m",
  "sort_dir": "ASC",
  "start": "2026-07-23T12:00:00Z"
}
Example response
{
  "data": [
    {
      "atm_iv": 43.74,
      "butterfly_10d": 1.54,
      "butterfly_25d": 0.26,
      "call_10d_iv": 38.5,
      "call_25d_iv": 41.2,
      "put_10d_iv": 52.1,
      "put_25d_iv": 46.8,
      "skew_10d": 13.6,
      "skew_25d": 5.6,
      "tenor": 1
    },
    {
      "atm_iv": 40.43,
      "butterfly_10d": 1.82,
      "butterfly_25d": 0.57,
      "call_10d_iv": 35.2,
      "call_25d_iv": 38.1,
      "put_10d_iv": 49.3,
      "put_25d_iv": 43.9,
      "skew_10d": 14.1,
      "skew_25d": 5.8,
      "tenor": 7
    },
    {
      "atm_iv": 38.66,
      "butterfly_10d": 1.84,
      "butterfly_25d": 0.49,
      "call_10d_iv": 33.8,
      "call_25d_iv": 36.5,
      "put_10d_iv": 47.2,
      "put_25d_iv": 41.8,
      "skew_10d": 13.4,
      "skew_25d": 5.3,
      "tenor": 14
    },
    {
      "atm_iv": 38.55,
      "butterfly_10d": 2.25,
      "butterfly_25d": 0.5,
      "call_10d_iv": 33.1,
      "call_25d_iv": 36.2,
      "put_10d_iv": 48.5,
      "put_25d_iv": 41.9,
      "skew_10d": 15.4,
      "skew_25d": 5.7,
      "tenor": 30
    },
    {
      "atm_iv": 39.92,
      "butterfly_10d": 2.23,
      "butterfly_25d": 0.33,
      "call_10d_iv": 34.5,
      "call_25d_iv": 37.4,
      "put_10d_iv": 49.8,
      "put_25d_iv": 43.1,
      "skew_10d": 15.3,
      "skew_25d": 5.7,
      "tenor": 60
    },
    {
      "atm_iv": 41.3,
      "butterfly_10d": 2.35,
      "butterfly_25d": 0.35,
      "call_10d_iv": 36.1,
      "call_25d_iv": 38.8,
      "put_10d_iv": 51.2,
      "put_25d_iv": 44.5,
      "skew_10d": 15.1,
      "skew_25d": 5.7,
      "tenor": 90
    },
    {
      "atm_iv": 44.78,
      "butterfly_10d": 2.12,
      "butterfly_25d": 0.37,
      "call_10d_iv": 39.3,
      "call_25d_iv": 42.1,
      "put_10d_iv": 54.5,
      "put_25d_iv": 48.2,
      "skew_10d": 15.2,
      "skew_25d": 6.1,
      "tenor": 180
    },
    {
      "atm_iv": 47.15,
      "butterfly_10d": 2.4,
      "butterfly_25d": 0.4,
      "call_10d_iv": 41.8,
      "call_25d_iv": 44.3,
      "put_10d_iv": 57.3,
      "put_25d_iv": 50.8,
      "skew_10d": 15.5,
      "skew_25d": 6.5,
      "tenor": 365
    }
  ],
  "meta": {
    "date": "2025-11-04T11:00:00.000Z",
    "next_date": "2025-11-04T11:01:00.000Z"
  }
}
GET/api/v1/options/vol-surface/by-time
$0.10 default
Description

Options data — pay per request

Documentation

Vol Surface By Time

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.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "currency": {
      "description": "Base currency (e.g., BTC, ETH). Required for vol-surface queries.",
      "example": "BTC",
      "required": true,
      "type": "string",
      "x-parameter-location": "query"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance, okx, bybit, bullish, derive). Required.",
      "example": "deribit",
      "required": true,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "maturity": {
      "description": "Maturity to query (e.g., 25DEC26). Required for vol-surface history due to large dataset size.",
      "example": "25DEC26",
      "required": true,
      "type": "string",
      "x-parameter-location": "query"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for aggregation. Default 1m.",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC)",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [
    "exchange",
    "currency",
    "maturity"
  ],
  "type": "object"
}
Request schema
{
  "properties": {
    "currency": {
      "description": "Base currency (e.g., BTC, ETH). Required for vol-surface queries.",
      "example": "BTC",
      "type": "string"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "type": "string"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "format": "date-time",
      "type": "string"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance, okx, bybit, bullish, derive). Required.",
      "example": "deribit",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "maturity": {
      "description": "Maturity to query (e.g., 25DEC26). Required for vol-surface history due to large dataset size.",
      "example": "25DEC26",
      "type": "string"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for aggregation. Default 1m.",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "type": "string"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC)",
      "format": "date-time",
      "type": "string"
    }
  },
  "required": [
    "exchange",
    "currency",
    "maturity"
  ],
  "type": "object"
}
Example request
{
  "currency": "BTC",
  "cursor": "test",
  "end": "2026-07-23T12:00:00Z",
  "exchange": "deribit",
  "limit": 100,
  "maturity": "25DEC26",
  "resolution": "1m",
  "sort_dir": "ASC",
  "start": "2026-07-23T12:00:00Z"
}
Example response
{
  "data": [
    {
      "atm_iv": 47.2,
      "butterfly_10d": 1.7,
      "butterfly_25d": 0.45,
      "call_10d_iv": 39.8,
      "call_25d_iv": 43.5,
      "currency": "BTC",
      "date": "2025-11-04T10:00:00.000Z",
      "days_to_expiry": 25.54,
      "exchange": "deribit",
      "maturity": "29NOV25",
      "put_10d_iv": 58.1,
      "put_25d_iv": 51.8,
      "skew_10d": 18.3,
      "skew_25d": 8.3,
      "underlying_price": 103500
    },
    {
      "atm_iv": 51.9,
      "butterfly_10d": 1.75,
      "butterfly_25d": 0.45,
      "call_10d_iv": 44.5,
      "call_25d_iv": 48.2,
      "currency": "BTC",
      "date": "2025-11-04T10:00:00.000Z",
      "days_to_expiry": 53.54,
      "exchange": "deribit",
      "maturity": "27DEC25",
      "put_10d_iv": 63.2,
      "put_25d_iv": 56.5,
      "skew_10d": 18.7,
      "skew_25d": 8.3,
      "underlying_price": 103500
    },
    {
      "atm_iv": 47.62,
      "butterfly_10d": 1.58,
      "butterfly_25d": 0.33,
      "call_10d_iv": 40.1,
      "call_25d_iv": 43.8,
      "currency": "BTC",
      "date": "2025-11-04T11:00:00.000Z",
      "days_to_expiry": 25.5,
      "exchange": "deribit",
      "maturity": "29NOV25",
      "put_10d_iv": 58.3,
      "put_25d_iv": 52.1,
      "skew_10d": 18.2,
      "skew_25d": 8.3,
      "underlying_price": 103722.83
    }
  ],
  "meta": {
    "next_cursor": "eyJtaW51dGUiOiIyMDI1LTExLTA0IDExOjAwOjAwIn0="
  }
}
GET/api/v1/options/volatility
$0.10 default
Description

Options data — pay per request

Documentation

Options Volatility & Greeks

Returns implied volatility and Greeks data for options instruments.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance, okx, bybit, bullish, derive)",
      "example": "deribit",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name": {
      "description": "Full options instrument identifier (e.g., BTC-24JUL26-68000-C, ETH-25DEC26-4000-P)",
      "example": "BTC-24JUL26-68000-C",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for bucketing results",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [],
  "type": "object"
}
Request schema
{
  "properties": {
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "type": "string"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance, okx, bybit, bullish, derive)",
      "example": "deribit",
      "type": "string"
    },
    "instrument_name": {
      "description": "Full options instrument identifier (e.g., BTC-24JUL26-68000-C, ETH-25DEC26-4000-P)",
      "example": "BTC-24JUL26-68000-C",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for bucketing results",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "type": "string"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    }
  },
  "type": "object"
}
Response schema
{
  "allOf": [
    {
      "properties": {
        "data": {
          "items": {
            "type": "array"
          },
          "type": "array"
        },
        "meta": {
          "properties": {
            "next_cursor": {
              "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,
              "type": "string"
            }
          },
          "required": [
            "next_cursor"
          ],
          "type": "object",
          "x-openapi-ref": "#/components/schemas/PaginationMetaEntity"
        }
      },
      "required": [
        "data",
        "meta"
      ],
      "type": "object",
      "x-openapi-ref": "#/components/schemas/PaginatedResponse"
    },
    {
      "properties": {
        "data": {
          "type": "array"
        }
      }
    }
  ]
}
Example request
{
  "cursor": "test",
  "end": "2026-07-21T10:00:00.000Z",
  "exchange": "deribit",
  "instrument_name": "BTC-24JUL26-68000-C",
  "limit": 100,
  "resolution": "1m",
  "sort_dir": "ASC",
  "start": "2026-07-14T10:00:00.000Z"
}
Example response
{
  "data": [
    {
      "ask_iv_close": 48.87,
      "ask_iv_high": 48.89,
      "ask_iv_low": 48.57,
      "ask_iv_open": 48.6,
      "bid_iv_close": 46.4,
      "bid_iv_high": 46.53,
      "bid_iv_low": 46.36,
      "bid_iv_open": 46.42,
      "date": "2025-11-04 11:00:00",
      "days_to_expiry": 324.9166666666667,
      "delta": 0.66315,
      "gamma": 0.00001,
      "iv_spread_avg": 2.3077777777777784,
      "iv_spread_close": 2.469999999999999,
      "iv_spread_high": 2.47,
      "iv_spread_low": 2.17,
      "iv_spread_open": 2.1799999999999997,
      "mark_iv_close": 47.62,
      "mark_iv_high": 47.62,
      "mark_iv_low": 47.62,
      "mark_iv_open": 47.62,
      "maturity": "25SEP26",
      "rho": 435.06539,
      "strike": 100000,
      "theta": -27.57357,
      "underlying_price": 109227.13,
      "vega": 376.24963
    },
    {
      "ask_iv_close": 48.98,
      "ask_iv_high": 48.98,
      "ask_iv_low": 48.86,
      "ask_iv_open": 48.92,
      "bid_iv_close": 46.51,
      "bid_iv_high": 46.51,
      "bid_iv_low": 46.39,
      "bid_iv_open": 46.45,
      "date": "2025-11-04 11:01:00",
      "days_to_expiry": 324.91597222222225,
      "delta": 0.66249,
      "gamma": 0.00001,
      "iv_spread_avg": 2.4662499999999987,
      "iv_spread_close": 2.469999999999999,
      "iv_spread_high": 2.47,
      "iv_spread_low": 2.46,
      "iv_spread_open": 2.469999999999999,
      "mark_iv_close": 47.62,
      "mark_iv_high": 47.62,
      "mark_iv_low": 47.62,
      "mark_iv_open": 47.62,
      "maturity": "25SEP26",
      "rho": 434.42588,
      "strike": 100000,
      "theta": -27.57106,
      "underlying_price": 109138.04,
      "vega": 376.22951
    },
    {
      "ask_iv_close": 48.62,
      "ask_iv_high": 48.97,
      "ask_iv_low": 48.54,
      "ask_iv_open": 48.97,
      "bid_iv_close": 47.17,
      "bid_iv_high": 47.17,
      "bid_iv_low": 46.24,
      "bid_iv_open": 46.51,
      "date": "2025-11-04 11:02:00",
      "days_to_expiry": 324.91527777777776,
      "delta": 0.66291,
      "gamma": 0.00001,
      "iv_spread_avg": 1.8576190476190468,
      "iv_spread_close": 1.4499999999999955,
      "iv_spread_high": 2.47,
      "iv_spread_low": 1.45,
      "iv_spread_open": 2.460000000000001,
      "mark_iv_close": 47.62,
      "mark_iv_high": 47.62,
      "mark_iv_low": 47.62,
      "mark_iv_open": 47.62,
      "maturity": "25SEP26",
      "rho": 434.82764,
      "strike": 100000,
      "theta": -27.57346,
      "underlying_price": 109194.74,
      "vega": 376.24168
    }
  ],
  "meta": {
    "next_cursor": "eyJtaW51dGUiOiIyMDI1LTExLTA0IDEyOjQwOjAwIn0="
  }
}
GET/api/v1/options/volume
$0.10 default
Description

Options data — pay per request

Documentation

Options Volume Stats

Returns rolling 24h volume metrics (base and USD) for options instruments filtered by currency with optional aggregation and interval bucketing.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance, okx, bybit, bullish, derive)",
      "example": "deribit",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name": {
      "description": "Full options instrument identifier (e.g., BTC-24JUL26-68000-C, ETH-25DEC26-4000-P)",
      "example": "BTC-24JUL26-68000-C",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for bucketing results",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [],
  "type": "object"
}
Request schema
{
  "properties": {
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "type": "string"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance, okx, bybit, bullish, derive)",
      "example": "deribit",
      "type": "string"
    },
    "instrument_name": {
      "description": "Full options instrument identifier (e.g., BTC-24JUL26-68000-C, ETH-25DEC26-4000-P)",
      "example": "BTC-24JUL26-68000-C",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for bucketing results",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "type": "string"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    }
  },
  "type": "object"
}
Response schema
{
  "allOf": [
    {
      "properties": {
        "data": {
          "items": {
            "type": "array"
          },
          "type": "array"
        },
        "meta": {
          "properties": {
            "next_cursor": {
              "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,
              "type": "string"
            }
          },
          "required": [
            "next_cursor"
          ],
          "type": "object",
          "x-openapi-ref": "#/components/schemas/PaginationMetaEntity"
        }
      },
      "required": [
        "data",
        "meta"
      ],
      "type": "object",
      "x-openapi-ref": "#/components/schemas/PaginatedResponse"
    },
    {
      "properties": {
        "data": {
          "items": {
            "properties": {
              "buy_trades_count": {
                "description": "Number of buy trades in the resolution bucket",
                "example": 245,
                "nullable": true,
                "type": "number"
              },
              "buy_volume": {
                "description": "Buy volume in the resolution bucket",
                "example": 750.12,
                "nullable": true,
                "type": "number"
              },
              "currency": {
                "description": "Base currency",
                "example": "BTC",
                "type": "string"
              },
              "date": {
                "description": "Date in ISO 8601 format (UTC)",
                "example": "2024-12-10T00:00:00.000Z",
                "format": "date-time",
                "type": "string"
              },
              "exchange": {
                "description": "Exchange name",
                "example": "deribit",
                "type": "string"
              },
              "instrument_name": {
                "description": "Instrument name",
                "example": "BTC-25DEC26",
                "type": "string"
              },
              "sell_trades_count": {
                "description": "Number of sell trades in the resolution bucket",
                "example": 198,
                "nullable": true,
                "type": "number"
              },
              "sell_volume": {
                "description": "Sell volume in the resolution bucket",
                "example": 680.5,
                "nullable": true,
                "type": "number"
              },
              "trades_count": {
                "description": "Total number of trades in the resolution bucket",
                "example": 443,
                "nullable": true,
                "type": "number"
              },
              "volume": {
                "description": "Total volume (buy + sell) in the resolution bucket",
                "example": 1430.62,
                "nullable": true,
                "type": "number"
              },
              "volume_24h": {
                "description": "24-hour rolling volume (base currency)",
                "example": 1500.25,
                "type": "number"
              },
              "volume_usd_24h": {
                "description": "24-hour rolling volume in USD terms",
                "example": 95000000.5,
                "nullable": true,
                "type": "number"
              }
            },
            "required": [
              "date",
              "volume_24h"
            ],
            "type": "object",
            "x-openapi-ref": "#/components/schemas/BaseVolumeDataEntity"
          },
          "type": "array"
        }
      }
    }
  ]
}
Example request
{
  "cursor": "test",
  "end": "2026-07-21T10:00:00.000Z",
  "exchange": "deribit",
  "instrument_name": "BTC-24JUL26-68000-C",
  "limit": 100,
  "resolution": "1m",
  "sort_dir": "ASC",
  "start": "2026-07-14T10:00:00.000Z"
}
Example response
{
  "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="
  }
}
GET/api/v1/perpetuals/carry
$0.10 default
Description

Perpetual swaps data — pay per request

Documentation

Perpetuals Carry — funding rate, basis, annualized carry

Returns funding rate (1-period and 8h forms), basis (mark − index), and annualized carry (% APR) per OHLC bucket for any perpetual instrument. **This is the funding-rate endpoint** — there is no separate /funding route. Funding, basis, and carry move together for perp analysis (a high positive funding rate with a wide negative basis means perps are trading rich vs. spot and longs are paying to hold), so they share one route. Works identically for crypto perps and macro perps (equity / commodity / FX / index — discover via /api/v1/macro/catalog).

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance, okx, bybit, hyperliquid, kraken, nado)",
      "example": "deribit",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name": {
      "description": "Full instrument identifier (e.g., BTC-PERPETUAL, BTC-29MAR24-70000-C)",
      "example": "BTC-PERPETUAL",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for bucketing results",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [],
  "type": "object"
}
Request schema
{
  "properties": {
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "type": "string"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance, okx, bybit, hyperliquid, kraken, nado)",
      "example": "deribit",
      "type": "string"
    },
    "instrument_name": {
      "description": "Full instrument identifier (e.g., BTC-PERPETUAL, BTC-29MAR24-70000-C)",
      "example": "BTC-PERPETUAL",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for bucketing results",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "type": "string"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    }
  },
  "type": "object"
}
Response schema
{
  "allOf": [
    {
      "properties": {
        "data": {
          "items": {
            "type": "array"
          },
          "type": "array"
        },
        "meta": {
          "properties": {
            "next_cursor": {
              "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,
              "type": "string"
            }
          },
          "required": [
            "next_cursor"
          ],
          "type": "object",
          "x-openapi-ref": "#/components/schemas/PaginationMetaEntity"
        }
      },
      "required": [
        "data",
        "meta"
      ],
      "type": "object",
      "x-openapi-ref": "#/components/schemas/PaginatedResponse"
    },
    {
      "properties": {
        "data": {
          "type": "array"
        }
      }
    }
  ]
}
Example request
{
  "cursor": "test",
  "end": "2026-07-21T10:00:00.000Z",
  "exchange": "deribit",
  "instrument_name": "BTC-PERPETUAL",
  "limit": 100,
  "resolution": "1m",
  "sort_dir": "ASC",
  "start": "2026-07-14T10:00:00.000Z"
}
Example response
{
  "data": [
    {
      "basis_close": -25.220000000001164,
      "basis_high": -18.820000000006985,
      "basis_low": -23.330000000001743,
      "basis_open": -19.69999999999709,
      "funding_8h_close": -0.00004628,
      "funding_8h_high": -0.00004628,
      "funding_8h_low": -0.00004634,
      "funding_8h_open": -0.00004634,
      "funding_rate_close": 0,
      "funding_rate_high": 0,
      "funding_rate_low": 0,
      "funding_rate_open": 0,
      "minute": "2025-11-04 11:00:00",
      "timestamp": 1762250400000
    },
    {
      "basis_close": -22.40000000000873,
      "basis_high": -23.020000000004075,
      "basis_low": -22.39999999999418,
      "basis_open": -25.220000000001164,
      "funding_8h_close": -0.00004627,
      "funding_8h_high": -0.00004627,
      "funding_8h_low": -0.00004628,
      "funding_8h_open": -0.00004628,
      "funding_rate_close": 0,
      "funding_rate_high": 0,
      "funding_rate_low": -0.00001633,
      "funding_rate_open": 0,
      "minute": "2025-11-04 11:01:00",
      "timestamp": 1762250460000
    },
    {
      "basis_close": -24.19999999999709,
      "basis_high": -17.830000000001746,
      "basis_low": -22.729999999995925,
      "basis_open": -22.70999999999185,
      "funding_8h_close": -0.00004626,
      "funding_8h_high": -0.00004626,
      "funding_8h_low": -0.00004626,
      "funding_8h_open": -0.00004626,
      "funding_rate_close": 0,
      "funding_rate_high": 0,
      "funding_rate_low": 0,
      "funding_rate_open": 0,
      "minute": "2025-11-04 11:02:00",
      "timestamp": 1762250520000
    }
  ],
  "meta": {
    "next_cursor": "eyJtaW51dGUiOiIyMDI1LTExLTA0IDEyOjM5OjAwIn0="
  }
}
GET/api/v1/perpetuals/catalog
$0.10 default
Description

Perpetual swaps data — pay per request

Documentation

Perpetuals Catalog

Returns a list of available perpetual instruments.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "asset_class": {
      "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.",
      "enum": [
        "crypto",
        "equity",
        "commodity",
        "forex",
        "index"
      ],
      "example": "equity",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "currency": {
      "description": "Filter by base currency (e.g., BTC, ETH, SOL)",
      "example": "BTC",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "cursor": {
      "description": "Pagination cursor from a previous response",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "description": "Filter by exchange (e.g., deribit, binance, okx, bybit, hyperliquid)",
      "example": "deribit",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of instruments to return (1-1000)",
      "example": 100,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "maturity": {
      "description": "Filter by maturity/expiry date (e.g., 28MAR25, 27JUN25)",
      "example": "28MAR25",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "sub_exchange": {
      "description": "Filter by sub-venue. Used for Hyperliquid HIP-3 deployers: xyz, flx, km, cash, vntl, hyna. Empty string matches single-venue exchanges.",
      "example": "xyz",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [],
  "type": "object"
}
Request schema
{
  "properties": {
    "asset_class": {
      "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.",
      "enum": [
        "crypto",
        "equity",
        "commodity",
        "forex",
        "index"
      ],
      "example": "equity",
      "type": "string"
    },
    "currency": {
      "description": "Filter by base currency (e.g., BTC, ETH, SOL)",
      "example": "BTC",
      "type": "string"
    },
    "cursor": {
      "description": "Pagination cursor from a previous response",
      "type": "string"
    },
    "exchange": {
      "description": "Filter by exchange (e.g., deribit, binance, okx, bybit, hyperliquid)",
      "example": "deribit",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of instruments to return (1-1000)",
      "example": 100,
      "type": "number"
    },
    "maturity": {
      "description": "Filter by maturity/expiry date (e.g., 28MAR25, 27JUN25)",
      "example": "28MAR25",
      "type": "string"
    },
    "sub_exchange": {
      "description": "Filter by sub-venue. Used for Hyperliquid HIP-3 deployers: xyz, flx, km, cash, vntl, hyna. Empty string matches single-venue exchanges.",
      "example": "xyz",
      "type": "string"
    }
  },
  "type": "object"
}
Example request
{
  "asset_class": "equity",
  "currency": "BTC",
  "cursor": "test",
  "exchange": "deribit",
  "limit": 100,
  "maturity": "28MAR25",
  "sub_exchange": "xyz"
}
Example response
[
  {
    "exchange": "okx",
    "instrument_name": "0G-USDT-SWAP"
  },
  {
    "exchange": "binance",
    "instrument_name": "0GUSDT"
  },
  {
    "exchange": "binance",
    "instrument_name": "1000000BOBUSDT"
  }
]
GET/api/v1/perpetuals/flow
$0.10 default
Description

Perpetual swaps data — pay per request

Documentation

Perpetuals Flow Summary

Returns an aggregated flow summary for perpetual swaps including total trades, buy/sell volume split, net OI change, block trade stats, liquidation pressure (long/short breakdown), most active instruments, notable trades, and notable liquidations. One call returns everything pre-computed.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "currency": {
      "description": "Base currency (e.g. BTC, ETH). Required.",
      "example": "BTC",
      "required": true,
      "type": "string",
      "x-parameter-location": "query"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance)",
      "example": "deribit",
      "required": true,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "min_amount": {
      "description": "Minimum contract amount per trade to include. Filters dust before aggregating.",
      "example": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "top_n": {
      "default": 10,
      "description": "Number of notable trades and most active instruments to return. Default 10.",
      "example": 10,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    }
  },
  "required": [
    "exchange",
    "currency"
  ],
  "type": "object"
}
Request schema
{
  "properties": {
    "currency": {
      "description": "Base currency (e.g. BTC, ETH). Required.",
      "example": "BTC",
      "type": "string"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "type": "string"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance)",
      "example": "deribit",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "min_amount": {
      "description": "Minimum contract amount per trade to include. Filters dust before aggregating.",
      "example": 1,
      "type": "number"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "top_n": {
      "default": 10,
      "description": "Number of notable trades and most active instruments to return. Default 10.",
      "example": 10,
      "type": "number"
    }
  },
  "required": [
    "exchange",
    "currency"
  ],
  "type": "object"
}
Example request
{
  "currency": "BTC",
  "cursor": "test",
  "end": "2026-07-21T10:00:00.000Z",
  "exchange": "deribit",
  "limit": 100,
  "min_amount": 1,
  "sort_dir": "ASC",
  "start": "2026-07-14T10:00:00.000Z",
  "top_n": 10
}
Example response
{
  "notable_liquidations": [],
  "notable_trades": [],
  "summary": {
    "avg_price": 95000,
    "block_trade_count": 12,
    "block_trade_volume": 800,
    "buy_volume": 6500.3,
    "largest_liquidation_usd": 500000,
    "liquidation_count": 120,
    "long_liquidation_count": 75,
    "long_liquidation_usd": 5500000,
    "most_active_instruments": [
      {
        "instrument_name": "BTC-PERPETUAL",
        "net_oi_change": 200,
        "trade_count": 3000,
        "volume": 8000
      }
    ],
    "net_oi_change": 450.2,
    "sell_volume": 5845.3,
    "short_liquidation_count": 45,
    "short_liquidation_usd": 3000000,
    "total_liquidation_usd": 8500000,
    "total_trades": 5000,
    "total_volume": 12345.6,
    "vwap": 95050
  }
}
GET/api/v1/perpetuals/level1
$0.10 default
Description

Perpetual swaps data — pay per request

Documentation

Perpetuals Level 1

Returns level 1 order book data for perpetual instruments.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance, okx, bybit, hyperliquid, kraken, nado)",
      "example": "deribit",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name": {
      "description": "Full instrument identifier (e.g., BTC-PERPETUAL, BTC-29MAR24-70000-C)",
      "example": "BTC-PERPETUAL",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for bucketing results",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [],
  "type": "object"
}
Request schema
{
  "properties": {
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "type": "string"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance, okx, bybit, hyperliquid, kraken, nado)",
      "example": "deribit",
      "type": "string"
    },
    "instrument_name": {
      "description": "Full instrument identifier (e.g., BTC-PERPETUAL, BTC-29MAR24-70000-C)",
      "example": "BTC-PERPETUAL",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for bucketing results",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "type": "string"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    }
  },
  "type": "object"
}
Response schema
{
  "allOf": [
    {
      "properties": {
        "data": {
          "items": {
            "type": "array"
          },
          "type": "array"
        },
        "meta": {
          "properties": {
            "next_cursor": {
              "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,
              "type": "string"
            }
          },
          "required": [
            "next_cursor"
          ],
          "type": "object",
          "x-openapi-ref": "#/components/schemas/PaginationMetaEntity"
        }
      },
      "required": [
        "data",
        "meta"
      ],
      "type": "object",
      "x-openapi-ref": "#/components/schemas/PaginatedResponse"
    },
    {
      "properties": {
        "data": {
          "type": "array"
        }
      }
    }
  ]
}
Example request
{
  "cursor": "test",
  "end": "2026-07-21T10:00:00.000Z",
  "exchange": "deribit",
  "instrument_name": "BTC-PERPETUAL",
  "limit": 100,
  "resolution": "1m",
  "sort_dir": "ASC",
  "start": "2026-07-14T10:00:00.000Z"
}
Example response
{
  "data": [
    {
      "ask_price_close": 103673.5,
      "ask_price_high": 103820,
      "ask_price_low": 103666,
      "ask_price_open": 103796,
      "ask_size_close": 199550,
      "ask_size_high": 859690,
      "ask_size_low": 20,
      "ask_size_open": 160120,
      "bid_ask_spread_close": 0.5,
      "bid_ask_spread_high": 34.5,
      "bid_ask_spread_low": 0.5,
      "bid_ask_spread_open": 0.5,
      "bid_price_close": 103673,
      "bid_price_high": 103819.5,
      "bid_price_low": 103658.5,
      "bid_price_open": 103795.5,
      "bid_size_close": 175500,
      "bid_size_high": 315370,
      "bid_size_low": 20,
      "bid_size_open": 141100,
      "date": "2025-11-04 11:00:00",
      "total_liquidity_avg": 346298.3168859649,
      "total_liquidity_close": 375050,
      "total_liquidity_high": 870680,
      "total_liquidity_low": 140,
      "total_liquidity_open": 244470
    },
    {
      "ask_price_close": 103610,
      "ask_price_high": 103726.5,
      "ask_price_low": 103610,
      "ask_price_open": 103673.5,
      "ask_size_close": 176980,
      "ask_size_high": 824410,
      "ask_size_low": 40,
      "ask_size_open": 175750,
      "bid_ask_spread_close": 0.5,
      "bid_ask_spread_high": 39.5,
      "bid_ask_spread_low": 0.5,
      "bid_ask_spread_open": 0.5,
      "bid_price_close": 103609.5,
      "bid_price_high": 103726,
      "bid_price_low": 103609.5,
      "bid_price_open": 103673,
      "bid_size_close": 208530,
      "bid_size_high": 429090,
      "bid_size_low": 140,
      "bid_size_open": 173630,
      "date": "2025-11-04 11:01:00",
      "total_liquidity_avg": 441197.5935828877,
      "total_liquidity_close": 385510,
      "total_liquidity_high": 1014770,
      "total_liquidity_low": 13470,
      "total_liquidity_open": 260070
    },
    {
      "ask_price_close": 103655.5,
      "ask_price_high": 103745,
      "ask_price_low": 103610,
      "ask_price_open": 103610,
      "ask_size_close": 320250,
      "ask_size_high": 565090,
      "ask_size_low": 20,
      "ask_size_open": 196980,
      "bid_ask_spread_close": 0.5,
      "bid_ask_spread_high": 32,
      "bid_ask_spread_low": 0.5,
      "bid_ask_spread_open": 0.5,
      "bid_price_close": 103655,
      "bid_price_high": 103744.5,
      "bid_price_low": 103609.5,
      "bid_price_open": 103609.5,
      "bid_size_close": 133120,
      "bid_size_high": 581540,
      "bid_size_low": 20,
      "bid_size_open": 182250,
      "date": "2025-11-04 11:02:00",
      "total_liquidity_avg": 317816.1932938856,
      "total_liquidity_close": 453370,
      "total_liquidity_high": 768070,
      "total_liquidity_low": 1820,
      "total_liquidity_open": 461780
    }
  ],
  "meta": {
    "next_cursor": "eyJtaW51dGUiOiIyMDI1LTExLTA0IDEyOjM5OjAwIn0="
  }
}
GET/api/v1/perpetuals/liquidations
$0.10 default
Description

Perpetual swaps data — pay per request

Documentation

Perpetuals Liquidation History

Returns individual forced liquidation events for perpetual swaps. Supports filtering by direction, position side, and minimum USD amount. Data available for binance, bybit, and okx exchanges.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "direction": {
      "description": "Filter by liquidation order direction (buy = short squeeze, sell = long liquidation)",
      "enum": [
        "buy",
        "sell"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance, okx, bybit, hyperliquid, kraken, nado)",
      "example": "deribit",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name": {
      "description": "Full instrument identifier (e.g., BTC-PERPETUAL, BTC-29MAR24-70000-C)",
      "example": "BTC-PERPETUAL",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "min_amount_usd": {
      "description": "Minimum liquidation value in USD. Filters out small liquidations.",
      "example": 1000,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "position_side": {
      "description": "Filter by position side being liquidated",
      "enum": [
        "long",
        "short"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "sort": {
      "default": "timestamp",
      "description": "Sort field. Default: timestamp.",
      "enum": [
        "timestamp",
        "amount_usd",
        "price"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "sort_dir": {
      "default": "DESC",
      "description": "Sort direction. Defaults to DESC (newest/largest first).",
      "enum": [
        "ASC",
        "DESC"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [],
  "type": "object"
}
Request schema
{
  "properties": {
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "type": "string"
    },
    "direction": {
      "description": "Filter by liquidation order direction (buy = short squeeze, sell = long liquidation)",
      "enum": [
        "buy",
        "sell"
      ],
      "type": "string"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance, okx, bybit, hyperliquid, kraken, nado)",
      "example": "deribit",
      "type": "string"
    },
    "instrument_name": {
      "description": "Full instrument identifier (e.g., BTC-PERPETUAL, BTC-29MAR24-70000-C)",
      "example": "BTC-PERPETUAL",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "min_amount_usd": {
      "description": "Minimum liquidation value in USD. Filters out small liquidations.",
      "example": 1000,
      "type": "number"
    },
    "position_side": {
      "description": "Filter by position side being liquidated",
      "enum": [
        "long",
        "short"
      ],
      "type": "string"
    },
    "sort": {
      "default": "timestamp",
      "description": "Sort field. Default: timestamp.",
      "enum": [
        "timestamp",
        "amount_usd",
        "price"
      ],
      "type": "string"
    },
    "sort_dir": {
      "default": "DESC",
      "description": "Sort direction. Defaults to DESC (newest/largest first).",
      "enum": [
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    }
  },
  "type": "object"
}
Response schema
{
  "allOf": [
    {
      "properties": {
        "data": {
          "items": {
            "type": "array"
          },
          "type": "array"
        },
        "meta": {
          "properties": {
            "next_cursor": {
              "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,
              "type": "string"
            }
          },
          "required": [
            "next_cursor"
          ],
          "type": "object",
          "x-openapi-ref": "#/components/schemas/PaginationMetaEntity"
        }
      },
      "required": [
        "data",
        "meta"
      ],
      "type": "object",
      "x-openapi-ref": "#/components/schemas/PaginatedResponse"
    },
    {
      "properties": {
        "data": {
          "type": "array"
        }
      }
    }
  ]
}
Example request
{
  "cursor": "test",
  "direction": "buy",
  "end": "2026-07-21T10:00:00.000Z",
  "exchange": "deribit",
  "instrument_name": "BTC-PERPETUAL",
  "limit": 100,
  "min_amount_usd": 1000,
  "position_side": "long",
  "sort": "timestamp",
  "sort_dir": "DESC",
  "start": "2026-07-14T10:00:00.000Z"
}
Example response
{
  "data": [
    {
      "amount": 0.075,
      "amount_base": 0.075,
      "amount_usd": 5114.05,
      "category": "forced",
      "currency": "BTC",
      "date": "2026-02-26T18:22:26.628Z",
      "days_to_expiry": null,
      "direction": "sell",
      "exchange": "binance",
      "index_price": 68222.5,
      "instrument_name": "BTCUSDT",
      "margin_type": "linear",
      "mark_price": 68187.5,
      "maturity": null,
      "order_id": null,
      "position_side": "long",
      "price": 68187.4,
      "timestamp": 1772104946628,
      "trade_id": null
    },
    {
      "amount": 21.7,
      "amount_base": 21.7,
      "amount_usd": 33.51,
      "category": "forced",
      "currency": "ENSO",
      "date": "2026-02-26T18:22:27.089Z",
      "days_to_expiry": null,
      "direction": "sell",
      "exchange": "binance",
      "index_price": 1.6229,
      "instrument_name": "ENSOUSDT",
      "margin_type": "linear",
      "mark_price": 1.5444,
      "maturity": null,
      "order_id": null,
      "position_side": "long",
      "price": 1.5442,
      "timestamp": 1772104947089,
      "trade_id": null
    }
  ],
  "meta": {
    "next_cursor": "eyJ0aW1lc3RhbXAiOjE3NzIxMDQ5NDYwMDB9"
  }
}
GET/api/v1/perpetuals/metadata
$0.10 default
Description

Perpetual swaps data — pay per request

Documentation

Perpetuals Metadata

Returns metadata for a specific perpetual instrument including data availability, total record count, and pagination information.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "exchange": {
      "description": "Exchange name",
      "example": "deribit",
      "required": true,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name": {
      "description": "Instrument name",
      "example": "BTC-PERPETUAL",
      "required": true,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Number of records per page for pagination calculation",
      "example": 100,
      "maximum": 100,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    }
  },
  "required": [
    "exchange",
    "instrument_name"
  ],
  "type": "object"
}
Request schema
{
  "properties": {
    "exchange": {
      "description": "Exchange name",
      "example": "deribit",
      "type": "string"
    },
    "instrument_name": {
      "description": "Instrument name",
      "example": "BTC-PERPETUAL",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Number of records per page for pagination calculation",
      "example": 100,
      "maximum": 100,
      "minimum": 1,
      "type": "number"
    }
  },
  "required": [
    "exchange",
    "instrument_name"
  ],
  "type": "object"
}
Response schema
{
  "properties": {
    "end_date": {
      "description": "End date of available data (ISO 8601 format)",
      "example": "2025-11-21T23:59:00.000Z",
      "type": "string"
    },
    "exchange": {
      "description": "Exchange name",
      "example": "deribit",
      "type": "string"
    },
    "instrument_name": {
      "description": "Instrument name",
      "example": "BTC-PERPETUAL",
      "type": "string"
    },
    "start_date": {
      "description": "Start date of available data (ISO 8601 format)",
      "example": "2020-01-01T00:00:00.000Z",
      "type": "string"
    },
    "total_count": {
      "description": "Total count of records available",
      "example": 1500000,
      "type": "number"
    },
    "total_pages": {
      "description": "Total number of pages based on the provided limit",
      "example": 15000,
      "type": "number"
    }
  },
  "required": [
    "exchange",
    "instrument_name",
    "start_date",
    "end_date",
    "total_count",
    "total_pages"
  ],
  "type": "object",
  "x-openapi-ref": "#/components/schemas/MetadataResponseEntity"
}
Example request
{
  "exchange": "deribit",
  "instrument_name": "BTC-PERPETUAL",
  "limit": 100
}
Example response
{
  "end_date": "2025-11-21T23:59:00.000Z",
  "exchange": "deribit",
  "instrument_name": "BTC-PERPETUAL",
  "start_date": "2020-01-01T00:00:00.000Z",
  "total_count": 1500000,
  "total_pages": 15000
}
GET/api/v1/perpetuals/ohlcvt
$0.10 default
Description

Perpetual swaps data — pay per request

Documentation

Perpetuals OHLCVT Market Data

Retrieves Open, High, Low, Close, Volume, and Trade statistics for perpetual contracts.

**Key Features:**
- Historical trade-based OHLC candlestick data
- Buy/sell volume breakdown
- Trade count statistics
- Liquidation and block trade volume tracking
- Mark and index price references
- Support for multiple resolutions (1m, 5m, 1h)

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance, okx, bybit, hyperliquid, kraken, nado)",
      "example": "deribit",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name": {
      "description": "Full instrument identifier (e.g., BTC-PERPETUAL, BTC-29MAR24-70000-C)",
      "example": "BTC-PERPETUAL",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for bucketing results",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [],
  "type": "object"
}
Request schema
{
  "properties": {
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "type": "string"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance, okx, bybit, hyperliquid, kraken, nado)",
      "example": "deribit",
      "type": "string"
    },
    "instrument_name": {
      "description": "Full instrument identifier (e.g., BTC-PERPETUAL, BTC-29MAR24-70000-C)",
      "example": "BTC-PERPETUAL",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for bucketing results",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "type": "string"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    }
  },
  "type": "object"
}
Response schema
{
  "allOf": [
    {
      "properties": {
        "data": {
          "items": {
            "type": "array"
          },
          "type": "array"
        },
        "meta": {
          "properties": {
            "next_cursor": {
              "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,
              "type": "string"
            }
          },
          "required": [
            "next_cursor"
          ],
          "type": "object",
          "x-openapi-ref": "#/components/schemas/PaginationMetaEntity"
        }
      },
      "required": [
        "data",
        "meta"
      ],
      "type": "object",
      "x-openapi-ref": "#/components/schemas/PaginatedResponse"
    },
    {
      "properties": {
        "data": {
          "items": {
            "properties": {
              "block_trade_buy_volume": {
                "description": "Volume from block trade buys",
                "example": 100,
                "nullable": true,
                "type": "number"
              },
              "block_trade_sell_volume": {
                "description": "Volume from block trade sells",
                "example": 150,
                "nullable": true,
                "type": "number"
              },
              "buy_trades_count": {
                "description": "Number of buy trades",
                "example": 150,
                "type": "number"
              },
              "buy_volume": {
                "description": "Buy-side volume (direction = buy)",
                "example": 1500.5,
                "type": "number"
              },
              "close": {
                "description": "Closing trade price in the time bucket",
                "example": 42500,
                "type": "number"
              },
              "currency": {
                "description": "Base currency",
                "example": "BTC",
                "type": "string"
              },
              "date": {
                "description": "Date in ISO 8601 format (UTC)",
                "example": "2024-12-10T00:00:00.000Z",
                "format": "date-time",
                "type": "string"
              },
              "days_to_expiry": {
                "description": "Days until expiry (NULL for PERPETUAL)",
                "example": 90.5,
                "nullable": true,
                "type": "number"
              },
              "exchange": {
                "description": "Exchange name",
                "example": "deribit",
                "type": "string"
              },
              "high": {
                "description": "Highest trade price in the time bucket",
                "example": 42890.75,
                "type": "number"
              },
              "index_price": {
                "description": "Index price at bar close (for reference)",
                "example": 42505,
                "nullable": true,
                "type": "number"
              },
              "instrument_name": {
                "description": "Instrument name",
                "example": "BTC-25DEC26",
                "type": "string"
              },
              "liquidation_long_volume": {
                "description": "Volume from long liquidations (forced sell orders)",
                "example": 75.5,
                "nullable": true,
                "type": "number"
              },
              "liquidation_short_volume": {
                "description": "Volume from short liquidations (forced buy orders)",
                "example": 50.25,
                "nullable": true,
                "type": "number"
              },
              "low": {
                "description": "Lowest trade price in the time bucket",
                "example": 41920.25,
                "type": "number"
              },
              "mark_price": {
                "description": "Mark price at bar close (for reference)",
                "example": 42500.5,
                "nullable": true,
                "type": "number"
              },
              "open": {
                "description": "Opening trade price in the time bucket",
                "example": 42150.5,
                "type": "number"
              },
              "sell_trades_count": {
                "description": "Number of sell trades",
                "example": 120,
                "type": "number"
              },
              "sell_volume": {
                "description": "Sell-side volume (direction = sell)",
                "example": 1200.3,
                "type": "number"
              },
              "trades_count": {
                "description": "Total number of trades (buy + sell)",
                "example": 270,
                "type": "number"
              },
              "volume": {
                "description": "Total volume (buy + sell)",
                "example": 2700.8,
                "type": "number"
              },
              "vwap": {
                "description": "Volume Weighted Average Price (VWAP)",
                "example": 42350.5,
                "type": "number"
              }
            },
            "required": [
              "date",
              "open",
              "high",
              "low",
              "close",
              "vwap",
              "volume",
              "buy_volume",
              "sell_volume",
              "trades_count",
              "buy_trades_count",
              "sell_trades_count"
            ],
            "type": "object",
            "x-openapi-ref": "#/components/schemas/FuturesOhlcvtEntity"
          },
          "type": "array"
        }
      }
    }
  ]
}
Example request
{
  "cursor": "test",
  "end": "2026-07-21T10:00:00.000Z",
  "exchange": "deribit",
  "instrument_name": "BTC-PERPETUAL",
  "limit": 100,
  "resolution": "1m",
  "sort_dir": "ASC",
  "start": "2026-07-14T10:00:00.000Z"
}
Example response
{
  "data": [
    {
      "block_trade_buy_volume": null,
      "block_trade_sell_volume": null,
      "buy_trades_count": 54,
      "buy_volume": 1253540,
      "close": 103673,
      "date": "2025-11-04 11:00:00",
      "high": 103820,
      "index_price": 103715.64,
      "liquidation_long_volume": null,
      "liquidation_short_volume": null,
      "low": 103658.5,
      "mark_price": 103690.42,
      "open": 103796,
      "sell_trades_count": 365,
      "sell_volume": 4931060,
      "trades_count": 419,
      "volume": 6184600,
      "vwap": 103699.66571160624
    },
    {
      "block_trade_buy_volume": null,
      "block_trade_sell_volume": null,
      "buy_trades_count": 35,
      "buy_volume": 325270,
      "close": 103620.5,
      "date": "2025-11-04 11:01:00",
      "high": 103721,
      "index_price": 103641.58,
      "liquidation_long_volume": 28950,
      "liquidation_short_volume": 15430,
      "low": 103620.5,
      "mark_price": 103619.18,
      "open": 103673,
      "sell_trades_count": 169,
      "sell_volume": 1905660,
      "trades_count": 204,
      "volume": 2230930,
      "vwap": 103672.90218204964
    },
    {
      "block_trade_buy_volume": 250000,
      "block_trade_sell_volume": 180000,
      "buy_trades_count": 70,
      "buy_volume": 1379460,
      "close": 103672.5,
      "date": "2025-11-04 11:02:00",
      "high": 103745,
      "index_price": 103686.53,
      "liquidation_long_volume": null,
      "liquidation_short_volume": null,
      "low": 103610,
      "mark_price": 103662.33,
      "open": 103610,
      "sell_trades_count": 161,
      "sell_volume": 2234330,
      "trades_count": 231,
      "volume": 3613790,
      "vwap": 103706.1497721229
    }
  ],
  "meta": {
    "next_cursor": "eyJtaW51dGUiOiIyMDI1LTExLTA0IDEyOjM5OjAwIn0="
  }
}
GET/api/v1/perpetuals/open-interest
$0.10 default
Description

Perpetual swaps data — pay per request

Documentation

Perpetuals Open Interest

Aggregates open interest across the selected perpetual instrument or currency using the requested resolution.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance, okx, bybit, hyperliquid, kraken, nado)",
      "example": "deribit",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name": {
      "description": "Full instrument identifier (e.g., BTC-PERPETUAL, BTC-29MAR24-70000-C)",
      "example": "BTC-PERPETUAL",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for bucketing results",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [],
  "type": "object"
}
Request schema
{
  "properties": {
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "type": "string"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance, okx, bybit, hyperliquid, kraken, nado)",
      "example": "deribit",
      "type": "string"
    },
    "instrument_name": {
      "description": "Full instrument identifier (e.g., BTC-PERPETUAL, BTC-29MAR24-70000-C)",
      "example": "BTC-PERPETUAL",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for bucketing results",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "type": "string"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    }
  },
  "type": "object"
}
Response schema
{
  "allOf": [
    {
      "properties": {
        "data": {
          "items": {
            "type": "array"
          },
          "type": "array"
        },
        "meta": {
          "properties": {
            "next_cursor": {
              "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,
              "type": "string"
            }
          },
          "required": [
            "next_cursor"
          ],
          "type": "object",
          "x-openapi-ref": "#/components/schemas/PaginationMetaEntity"
        }
      },
      "required": [
        "data",
        "meta"
      ],
      "type": "object",
      "x-openapi-ref": "#/components/schemas/PaginatedResponse"
    },
    {
      "properties": {
        "data": {
          "type": "array"
        }
      }
    }
  ]
}
Example request
{
  "cursor": "test",
  "end": "2026-07-21T10:00:00.000Z",
  "exchange": "deribit",
  "instrument_name": "BTC-PERPETUAL",
  "limit": 100,
  "resolution": "1m",
  "sort_dir": "ASC",
  "start": "2026-07-14T10:00:00.000Z"
}
Example response
{
  "data": [
    {
      "date": "2025-11-04 11:00:00",
      "oi_close": 14484.75799403648,
      "oi_high": 14494.975017789338,
      "oi_low": 14480.302050051028,
      "oi_open": 14483.836684775828
    },
    {
      "date": "2025-11-04 11:01:00",
      "oi_close": 14495.303282654815,
      "oi_high": 14495.570477778463,
      "oi_low": 14484.624753264488,
      "oi_open": 14484.75799403648
    },
    {
      "date": "2025-11-04 11:02:00",
      "oi_close": 14479.21911460026,
      "oi_high": 14495.349446553402,
      "oi_low": 14470.044024835908,
      "oi_open": 14495.306080458478
    }
  ],
  "meta": {
    "next_cursor": "eyJtaW51dGUiOiIyMDI1LTExLTA0IDEyOjM5OjAwIn0="
  }
}
GET/api/v1/perpetuals/orderbook
$0.10 default
Description

Perpetual swaps data — pay per request

Documentation

Perpetuals L2 Orderbook

Returns aggregated L2 orderbook depth metrics for perpetual instruments.

**Key Features:**
- Bid/ask liquidity at 4 depth levels (10, 20, 50, 100 levels)
- Order book imbalance metrics (OHLC + average) per depth
- Microprice (liquidity-weighted mid-price)
- Snapshot count per time bucket
- Support for multiple resolutions (1m, 5m, 15m, 1h, 4h, 1d)

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance, okx, bybit, hyperliquid, kraken, nado)",
      "example": "deribit",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name": {
      "description": "Full instrument identifier (e.g., BTC-PERPETUAL, BTC-29MAR24-70000-C)",
      "example": "BTC-PERPETUAL",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for bucketing results",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [],
  "type": "object"
}
Request schema
{
  "properties": {
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "type": "string"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance, okx, bybit, hyperliquid, kraken, nado)",
      "example": "deribit",
      "type": "string"
    },
    "instrument_name": {
      "description": "Full instrument identifier (e.g., BTC-PERPETUAL, BTC-29MAR24-70000-C)",
      "example": "BTC-PERPETUAL",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for bucketing results",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "type": "string"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    }
  },
  "type": "object"
}
Response schema
{
  "allOf": [
    {
      "properties": {
        "data": {
          "items": {
            "type": "array"
          },
          "type": "array"
        },
        "meta": {
          "properties": {
            "next_cursor": {
              "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,
              "type": "string"
            }
          },
          "required": [
            "next_cursor"
          ],
          "type": "object",
          "x-openapi-ref": "#/components/schemas/PaginationMetaEntity"
        }
      },
      "required": [
        "data",
        "meta"
      ],
      "type": "object",
      "x-openapi-ref": "#/components/schemas/PaginatedResponse"
    },
    {
      "properties": {
        "data": {
          "type": "array"
        }
      }
    }
  ]
}
Example request
{
  "cursor": "test",
  "end": "2026-07-21T10:00:00.000Z",
  "exchange": "deribit",
  "instrument_name": "BTC-PERPETUAL",
  "limit": 100,
  "resolution": "1m",
  "sort_dir": "ASC",
  "start": "2026-07-14T10:00:00.000Z"
}
Example response
{
  "data": [
    {
      "ask_liq_100_avg": 39.5,
      "ask_liq_100_close": 42,
      "ask_liq_100_high": 50,
      "ask_liq_100_low": 30,
      "ask_liq_100_open": 40.834,
      "ask_liq_10_avg": 5,
      "ask_liq_10_close": 5.1,
      "ask_liq_10_high": 6.2,
      "ask_liq_10_low": 4.1,
      "ask_liq_10_open": 5.375,
      "ask_liq_20_avg": 5.8,
      "ask_liq_20_close": 6,
      "ask_liq_20_high": 8,
      "ask_liq_20_low": 4.5,
      "ask_liq_20_open": 6.398,
      "ask_liq_50_avg": 18.2,
      "ask_liq_50_close": 19.5,
      "ask_liq_50_high": 22,
      "ask_liq_50_low": 15,
      "ask_liq_50_open": 18.966,
      "bid_liq_100_avg": 13.2,
      "bid_liq_100_close": 14.5,
      "bid_liq_100_high": 18,
      "bid_liq_100_low": 9,
      "bid_liq_100_open": 12.891,
      "bid_liq_10_avg": 0.35,
      "bid_liq_10_close": 0.42,
      "bid_liq_10_high": 0.55,
      "bid_liq_10_low": 0.15,
      "bid_liq_10_open": 0.301,
      "bid_liq_20_avg": 0.45,
      "bid_liq_20_close": 0.5,
      "bid_liq_20_high": 0.8,
      "bid_liq_20_low": 0.2,
      "bid_liq_20_open": 0.359,
      "bid_liq_50_avg": 7.5,
      "bid_liq_50_close": 8.1,
      "bid_liq_50_high": 10.5,
      "bid_liq_50_low": 5.2,
      "bid_liq_50_open": 7.831,
      "currency": "BTC",
      "date": "2026-01-22 07:20:00",
      "exchange": "bybit",
      "imbalance_100_avg": -0.48,
      "imbalance_100_close": -0.45,
      "imbalance_100_high": -0.2,
      "imbalance_100_low": -0.7,
      "imbalance_100_open": -0.52,
      "imbalance_10_avg": -0.78,
      "imbalance_10_close": -0.82,
      "imbalance_10_high": -0.5,
      "imbalance_10_low": -0.95,
      "imbalance_10_open": -0.894,
      "imbalance_20_avg": -0.78,
      "imbalance_20_close": -0.82,
      "imbalance_20_high": -0.5,
      "imbalance_20_low": -0.95,
      "imbalance_20_open": -0.894,
      "imbalance_50_avg": -0.38,
      "imbalance_50_close": -0.35,
      "imbalance_50_high": -0.1,
      "imbalance_50_low": -0.6,
      "imbalance_50_open": -0.416,
      "instrument_name": "BTCUSDT",
      "microprice_avg": 89968.2,
      "microprice_close": 89970.5,
      "microprice_high": 89975,
      "microprice_low": 89960,
      "microprice_open": 89967.9,
      "snapshot_count": 60
    }
  ],
  "meta": {
    "next_cursor": "eyJtaW51dGUiOiIyMDI2LTAxLTIyIDA3OjIxOjAwIn0="
  }
}
GET/api/v1/perpetuals/orderbook-raw
$0.10 default
Description

Perpetual swaps data — pay per request

Documentation

Perpetuals L2 Orderbook Raw Snapshots

Returns raw L2 orderbook snapshots for perpetual instruments with full bid/ask arrays.

**Key Features:**
- Full bid/ask price levels (up to 100 levels each)
- Pre-computed liquidity at 4 depth levels (10, 20, 50, 100)
- Order book imbalance per depth
- Microprice (liquidity-weighted mid-price)
- Individual snapshots (not aggregated) — 30-day data retention

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "block_only": {
      "default": false,
      "description": "If true, only return trades with a block_trade_id (block trades).",
      "required": false,
      "type": "boolean",
      "x-parameter-location": "query"
    },
    "currency": {
      "description": "Base currency (e.g. BTC, ETH). Returns trades across ALL perpetuals for this currency. Either currency or instrument_name is required.",
      "example": "BTC",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "direction": {
      "description": "Filter by trade direction (aggressor side)",
      "enum": [
        "buy",
        "sell"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance)",
      "example": "deribit",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name": {
      "description": "Full perpetual instrument identifier (e.g., BTC-PERPETUAL). Either instrument_name or currency is required.",
      "example": "BTC-PERPETUAL",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "min_amount": {
      "description": "Minimum trade amount (in contracts). Filters out dust trades.",
      "example": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "sort": {
      "default": "timestamp",
      "description": "Sort field. Default: timestamp.",
      "enum": [
        "timestamp",
        "amount",
        "price"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "sort_dir": {
      "default": "ASC",
      "description": "Sort direction. Defaults to ASC for instrument mode, DESC for currency mode.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "strategy": {
      "description": "Filter by strategy label. Accepts comma-separated values (e.g. calendar_spread).",
      "enum": [
        "COMBO_HEDGE_ROLL_TO_FUTURE",
        "COMBO_HEDGE_ROLL_TO_PERP",
        "COMBO_MULTI_LEG_1",
        "COMBO_PERP_VS_FUTURE",
        "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"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "top_n": {
      "description": "Return top N trades by the sort field (DESC). Overrides limit and sort_dir. No pagination cursor returned.",
      "example": 20,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    }
  },
  "required": [],
  "type": "object"
}
Request schema
{
  "properties": {
    "block_only": {
      "default": false,
      "description": "If true, only return trades with a block_trade_id (block trades).",
      "type": "boolean"
    },
    "currency": {
      "description": "Base currency (e.g. BTC, ETH). Returns trades across ALL perpetuals for this currency. Either currency or instrument_name is required.",
      "example": "BTC",
      "type": "string"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "type": "string"
    },
    "direction": {
      "description": "Filter by trade direction (aggressor side)",
      "enum": [
        "buy",
        "sell"
      ],
      "type": "string"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance)",
      "example": "deribit",
      "type": "string"
    },
    "instrument_name": {
      "description": "Full perpetual instrument identifier (e.g., BTC-PERPETUAL). Either instrument_name or currency is required.",
      "example": "BTC-PERPETUAL",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "min_amount": {
      "description": "Minimum trade amount (in contracts). Filters out dust trades.",
      "example": 1,
      "type": "number"
    },
    "sort": {
      "default": "timestamp",
      "description": "Sort field. Default: timestamp.",
      "enum": [
        "timestamp",
        "amount",
        "price"
      ],
      "type": "string"
    },
    "sort_dir": {
      "default": "ASC",
      "description": "Sort direction. Defaults to ASC for instrument mode, DESC for currency mode.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "strategy": {
      "description": "Filter by strategy label. Accepts comma-separated values (e.g. calendar_spread).",
      "example": "calendar_spread",
      "type": "string"
    },
    "top_n": {
      "description": "Return top N trades by the sort field (DESC). Overrides limit and sort_dir. No pagination cursor returned.",
      "example": 20,
      "type": "number"
    }
  },
  "type": "object"
}
Response schema
{
  "allOf": [
    {
      "properties": {
        "data": {
          "items": {
            "type": "array"
          },
          "type": "array"
        },
        "meta": {
          "properties": {
            "next_cursor": {
              "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,
              "type": "string"
            }
          },
          "required": [
            "next_cursor"
          ],
          "type": "object",
          "x-openapi-ref": "#/components/schemas/PaginationMetaEntity"
        }
      },
      "required": [
        "data",
        "meta"
      ],
      "type": "object",
      "x-openapi-ref": "#/components/schemas/PaginatedResponse"
    },
    {
      "properties": {
        "data": {
          "type": "array"
        }
      }
    }
  ]
}
Example request
{
  "block_only": false,
  "currency": "BTC",
  "cursor": "test",
  "direction": "buy",
  "end": "2026-07-21T10:00:00.000Z",
  "exchange": "deribit",
  "instrument_name": "BTC-PERPETUAL",
  "limit": 100,
  "min_amount": 1,
  "sort": "timestamp",
  "sort_dir": "ASC",
  "start": "2026-07-14T10:00:00.000Z",
  "strategy": "calendar_spread",
  "top_n": 20
}
Example response
{
  "data": [
    {
      "ask_liquidity_10": 5.375,
      "ask_liquidity_100": 40.834,
      "ask_liquidity_20": 6.398,
      "ask_liquidity_50": 18.966,
      "asks": [
        {
          "price": 89968,
          "size": 3.085
        },
        {
          "price": 89968.2,
          "size": 0.002
        }
      ],
      "bid_liquidity_10": 0.301,
      "bid_liquidity_100": 12.891,
      "bid_liquidity_20": 0.359,
      "bid_liquidity_50": 7.831,
      "bids": [
        {
          "price": 89967.9,
          "size": 0.169
        },
        {
          "price": 89967.8,
          "size": 0.002
        }
      ],
      "currency": "BTC",
      "date": "2026-01-22T07:20:57.000Z",
      "depth": 100,
      "exchange": "bybit",
      "imbalance_10": -0.894,
      "imbalance_100": -0.52,
      "imbalance_20": -0.894,
      "imbalance_50": -0.416,
      "instrument_name": "BTCUSDT",
      "margin_type": "linear",
      "microprice": 89967.905,
      "multiplier": 1,
      "timestamp": 1769066457868
    }
  ],
  "meta": {
    "next_cursor": "eyJ0aW1lc3RhbXAiOjE3NjkwNjY0NTc4Njh9"
  }
}
GET/api/v1/perpetuals/reference-price
$0.10 default
Description

Perpetual swaps data — pay per request

Documentation

Perpetuals Reference Prices

Returns reference price data for perpetual instruments.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance, okx, bybit, hyperliquid, kraken, nado)",
      "example": "deribit",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name": {
      "description": "Full instrument identifier (e.g., BTC-PERPETUAL, BTC-29MAR24-70000-C)",
      "example": "BTC-PERPETUAL",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for bucketing results",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [],
  "type": "object"
}
Request schema
{
  "properties": {
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "type": "string"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance, okx, bybit, hyperliquid, kraken, nado)",
      "example": "deribit",
      "type": "string"
    },
    "instrument_name": {
      "description": "Full instrument identifier (e.g., BTC-PERPETUAL, BTC-29MAR24-70000-C)",
      "example": "BTC-PERPETUAL",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for bucketing results",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "type": "string"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    }
  },
  "type": "object"
}
Response schema
{
  "allOf": [
    {
      "properties": {
        "data": {
          "items": {
            "type": "array"
          },
          "type": "array"
        },
        "meta": {
          "properties": {
            "next_cursor": {
              "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,
              "type": "string"
            }
          },
          "required": [
            "next_cursor"
          ],
          "type": "object",
          "x-openapi-ref": "#/components/schemas/PaginationMetaEntity"
        }
      },
      "required": [
        "data",
        "meta"
      ],
      "type": "object",
      "x-openapi-ref": "#/components/schemas/PaginatedResponse"
    },
    {
      "properties": {
        "data": {
          "type": "array"
        }
      }
    }
  ]
}
Example request
{
  "cursor": "test",
  "end": "2026-07-21T10:00:00.000Z",
  "exchange": "deribit",
  "instrument_name": "BTC-PERPETUAL",
  "limit": 100,
  "resolution": "1m",
  "sort_dir": "ASC",
  "start": "2026-07-14T10:00:00.000Z"
}
Example response
{
  "data": [
    {
      "date": "2025-11-04 11:00:00",
      "index_price_close": 103715.64,
      "index_price_high": 103834.66,
      "index_price_low": 103703.62,
      "index_price_open": 103814.31,
      "mark_price_close": 103690.42,
      "mark_price_high": 103815.84,
      "mark_price_low": 103680.29,
      "mark_price_open": 103794.61,
      "underlying_price": 19321.37
    },
    {
      "date": "2025-11-04 11:01:00",
      "index_price_close": 103641.58,
      "index_price_high": 103732.25,
      "index_price_low": 103639.67,
      "index_price_open": 103715.64,
      "mark_price_close": 103619.18,
      "mark_price_high": 103709.23,
      "mark_price_low": 103617.27,
      "mark_price_open": 103690.42,
      "underlying_price": 19321.37
    },
    {
      "date": "2025-11-04 11:02:00",
      "index_price_close": 103686.53,
      "index_price_high": 103755.75,
      "index_price_low": 103641.58,
      "index_price_open": 103641.87,
      "mark_price_close": 103662.33,
      "mark_price_high": 103737.92,
      "mark_price_low": 103618.85,
      "mark_price_open": 103619.16,
      "underlying_price": 19321.37
    }
  ],
  "meta": {
    "next_cursor": "eyJtaW51dGUiOiIyMDI1LTExLTA0IDEyOjM5OjAwIn0="
  }
}
GET/api/v1/perpetuals/snapshot
$0.10 default
Description

Perpetual swaps data — pay per request

Documentation

Perpetuals Snapshot

Returns a snapshot of all perpetual instruments for a given exchange at a single minute. If no date is provided, returns the latest available snapshot. Currency is optional.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "currency": {
      "description": "Base currency filter (e.g., BTC, ETH)",
      "example": "BTC",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "date": {
      "description": "Exact date/time for the snapshot in ISO 8601 format (UTC). If omitted, returns the latest available snapshot.",
      "example": "2026-01-20T10:00:00Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance, okx, bybit, bullish, derive). Required.",
      "example": "deribit",
      "required": true,
      "type": "string",
      "x-parameter-location": "query"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for the snapshot. At 1m (default), returns raw minute-level data. At higher resolutions (5m, 1h, etc.), data is aggregated into the specified bucket.",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [
    "exchange"
  ],
  "type": "object"
}
Request schema
{
  "properties": {
    "currency": {
      "description": "Base currency filter (e.g., BTC, ETH)",
      "example": "BTC",
      "type": "string"
    },
    "date": {
      "description": "Exact date/time for the snapshot in ISO 8601 format (UTC). If omitted, returns the latest available snapshot.",
      "example": "2026-01-20T10:00:00Z",
      "format": "date-time",
      "type": "string"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance, okx, bybit, bullish, derive). Required.",
      "example": "deribit",
      "type": "string"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for the snapshot. At 1m (default), returns raw minute-level data. At higher resolutions (5m, 1h, etc.), data is aggregated into the specified bucket.",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "type": "string"
    }
  },
  "required": [
    "exchange"
  ],
  "type": "object"
}
Example request
{
  "currency": "BTC",
  "date": "2026-01-20T10:00:00Z",
  "exchange": "deribit",
  "resolution": "1m"
}
Example response
{
  "data": [
    {
      "ask_price": 103673.5,
      "ask_size": 199550,
      "bid_ask_spread": 0.5,
      "bid_price": 103673,
      "bid_size": 175500,
      "currency": "BTC",
      "date": "2025-11-04 11:00:00",
      "exchange": "deribit",
      "funding_rate": 5,
      "index_price": 103715.64,
      "instrument_name": "BTC-PERPETUAL",
      "mark_price": 103690.42,
      "next_funding_time": 1733788800000,
      "oi": 14484.76,
      "volume_usd_24h": 1408049640
    },
    {
      "ask_price": 3180,
      "ask_size": 60000,
      "bid_ask_spread": 0.5,
      "bid_price": 3179.5,
      "bid_size": 50000,
      "currency": "ETH",
      "date": "2025-11-04 11:00:00",
      "exchange": "deribit",
      "funding_rate": 3.2,
      "index_price": 3182.1,
      "instrument_name": "ETH-PERPETUAL",
      "mark_price": 3180.25,
      "next_funding_time": 1733788800000,
      "oi": 48200.3,
      "volume_usd_24h": 520400000
    }
  ],
  "meta": {
    "minute": "2025-11-04 11:00:00"
  }
}
GET/api/v1/perpetuals/ticker-history
$0.10 default
Description

Perpetual swaps data — pay per request

Documentation

Perpetuals Ticker History

Returns historical ticker data for perpetual instruments.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance, okx, bybit, hyperliquid, kraken, nado)",
      "example": "deribit",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name": {
      "description": "Full instrument identifier (e.g., BTC-PERPETUAL, BTC-29MAR24-70000-C)",
      "example": "BTC-PERPETUAL",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for bucketing results",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [],
  "type": "object"
}
Request schema
{
  "properties": {
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "type": "string"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance, okx, bybit, hyperliquid, kraken, nado)",
      "example": "deribit",
      "type": "string"
    },
    "instrument_name": {
      "description": "Full instrument identifier (e.g., BTC-PERPETUAL, BTC-29MAR24-70000-C)",
      "example": "BTC-PERPETUAL",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for bucketing results",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "type": "string"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    }
  },
  "type": "object"
}
Response schema
{
  "allOf": [
    {
      "properties": {
        "data": {
          "items": {
            "type": "array"
          },
          "type": "array"
        },
        "meta": {
          "properties": {
            "next_cursor": {
              "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,
              "type": "string"
            }
          },
          "required": [
            "next_cursor"
          ],
          "type": "object",
          "x-openapi-ref": "#/components/schemas/PaginationMetaEntity"
        }
      },
      "required": [
        "data",
        "meta"
      ],
      "type": "object",
      "x-openapi-ref": "#/components/schemas/PaginatedResponse"
    },
    {
      "properties": {
        "data": {
          "type": "array"
        }
      }
    }
  ]
}
Example request
{
  "cursor": "test",
  "end": "2026-07-21T10:00:00.000Z",
  "exchange": "deribit",
  "instrument_name": "BTC-PERPETUAL",
  "limit": 100,
  "resolution": "1m",
  "sort_dir": "ASC",
  "start": "2026-07-14T10:00:00.000Z"
}
Example response
{
  "data": [
    {
      "ask_price": 103673.5,
      "ask_size": 199550,
      "bid_ask_spread": 0.5,
      "bid_price": 103673,
      "bid_size": 175500,
      "date": "2025-11-04 11:00:00",
      "funding_rate": 5,
      "index_price": 103715.64,
      "mark_price": 103690.42,
      "next_funding_time": 155,
      "oi": 14484.75799403648,
      "volume_usd_24h": 1408049640
    },
    {
      "ask_price": 103610,
      "ask_size": 176980,
      "bid_ask_spread": 0.5,
      "bid_price": 103609.5,
      "bid_size": 208530,
      "date": "2025-11-04 11:01:00",
      "funding_rate": 5,
      "index_price": 103641.58,
      "mark_price": 103619.18,
      "next_funding_time": 155,
      "oi": 14495.303282654815,
      "volume_usd_24h": 1409996050
    },
    {
      "ask_price": 103655.5,
      "ask_size": 320250,
      "bid_ask_spread": 0.5,
      "bid_price": 103655,
      "bid_size": 133120,
      "date": "2025-11-04 11:02:00",
      "funding_rate": 5,
      "index_price": 103686.53,
      "mark_price": 103662.33,
      "next_funding_time": 155,
      "oi": 14479.21911460026,
      "volume_usd_24h": 1413511150
    }
  ],
  "meta": {
    "next_cursor": "eyJtaW51dGUiOiIyMDI1LTExLTA0IDEyOjM5OjAwIn0="
  }
}
GET/api/v1/perpetuals/trades
$0.10 default
Description

Perpetual swaps data — pay per request

Documentation

Perpetuals Trade History

Returns perpetual trades with full trade details. Supports two modes: (1) instrument mode — provide instrument_name for a single perpetual, (2) currency mode — provide currency (e.g. BTC) for ALL perpetual trades across all instruments. Additional filters: direction, block_only, min_amount, strategy, sort, sort_dir. Use top_n for quick top-trades scanning.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "block_only": {
      "default": false,
      "description": "If true, only return trades with a block_trade_id (block trades).",
      "required": false,
      "type": "boolean",
      "x-parameter-location": "query"
    },
    "currency": {
      "description": "Base currency (e.g. BTC, ETH). Returns trades across ALL perpetuals for this currency. Either currency or instrument_name is required.",
      "example": "BTC",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "direction": {
      "description": "Filter by trade direction (aggressor side)",
      "enum": [
        "buy",
        "sell"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance)",
      "example": "deribit",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name": {
      "description": "Full perpetual instrument identifier (e.g., BTC-PERPETUAL). Either instrument_name or currency is required.",
      "example": "BTC-PERPETUAL",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "min_amount": {
      "description": "Minimum trade amount (in contracts). Filters out dust trades.",
      "example": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "sort": {
      "default": "timestamp",
      "description": "Sort field. Default: timestamp.",
      "enum": [
        "timestamp",
        "amount",
        "price"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "sort_dir": {
      "default": "ASC",
      "description": "Sort direction. Defaults to ASC for instrument mode, DESC for currency mode.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "strategy": {
      "description": "Filter by strategy label. Accepts comma-separated values (e.g. calendar_spread).",
      "enum": [
        "COMBO_HEDGE_ROLL_TO_FUTURE",
        "COMBO_HEDGE_ROLL_TO_PERP",
        "COMBO_MULTI_LEG_1",
        "COMBO_PERP_VS_FUTURE",
        "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"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "top_n": {
      "description": "Return top N trades by the sort field (DESC). Overrides limit and sort_dir. No pagination cursor returned.",
      "example": 20,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    }
  },
  "required": [],
  "type": "object"
}
Request schema
{
  "properties": {
    "block_only": {
      "default": false,
      "description": "If true, only return trades with a block_trade_id (block trades).",
      "type": "boolean"
    },
    "currency": {
      "description": "Base currency (e.g. BTC, ETH). Returns trades across ALL perpetuals for this currency. Either currency or instrument_name is required.",
      "example": "BTC",
      "type": "string"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "type": "string"
    },
    "direction": {
      "description": "Filter by trade direction (aggressor side)",
      "enum": [
        "buy",
        "sell"
      ],
      "type": "string"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance)",
      "example": "deribit",
      "type": "string"
    },
    "instrument_name": {
      "description": "Full perpetual instrument identifier (e.g., BTC-PERPETUAL). Either instrument_name or currency is required.",
      "example": "BTC-PERPETUAL",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "min_amount": {
      "description": "Minimum trade amount (in contracts). Filters out dust trades.",
      "example": 1,
      "type": "number"
    },
    "sort": {
      "default": "timestamp",
      "description": "Sort field. Default: timestamp.",
      "enum": [
        "timestamp",
        "amount",
        "price"
      ],
      "type": "string"
    },
    "sort_dir": {
      "default": "ASC",
      "description": "Sort direction. Defaults to ASC for instrument mode, DESC for currency mode.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "strategy": {
      "description": "Filter by strategy label. Accepts comma-separated values (e.g. calendar_spread).",
      "example": "calendar_spread",
      "type": "string"
    },
    "top_n": {
      "description": "Return top N trades by the sort field (DESC). Overrides limit and sort_dir. No pagination cursor returned.",
      "example": 20,
      "type": "number"
    }
  },
  "type": "object"
}
Response schema
{
  "allOf": [
    {
      "properties": {
        "data": {
          "items": {
            "type": "array"
          },
          "type": "array"
        },
        "meta": {
          "properties": {
            "next_cursor": {
              "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,
              "type": "string"
            }
          },
          "required": [
            "next_cursor"
          ],
          "type": "object",
          "x-openapi-ref": "#/components/schemas/PaginationMetaEntity"
        }
      },
      "required": [
        "data",
        "meta"
      ],
      "type": "object",
      "x-openapi-ref": "#/components/schemas/PaginatedResponse"
    },
    {
      "properties": {
        "data": {
          "type": "array"
        }
      }
    }
  ]
}
Example request
{
  "block_only": false,
  "currency": "BTC",
  "cursor": "test",
  "direction": "buy",
  "end": "2026-07-21T10:00:00.000Z",
  "exchange": "deribit",
  "instrument_name": "BTC-PERPETUAL",
  "limit": 100,
  "min_amount": 1,
  "sort": "timestamp",
  "sort_dir": "ASC",
  "start": "2026-07-14T10:00:00.000Z",
  "strategy": "calendar_spread",
  "top_n": 20
}
Example response
{
  "data": [
    {
      "amount": 500,
      "basis": -0.17999999999301508,
      "block_trade_id": "",
      "combo_id": "BTC-FS-6JUN25_PERP",
      "combo_trade_id": "369968308",
      "date": "2025-11-04 11:00:00",
      "direction": "buy",
      "funding": 0.00001299,
      "index_price": 105306.68,
      "instrument_name": "BTC-PERPETUAL",
      "maturity": "PERPETUAL",
      "oi_before": 968197530,
      "oi_change": null,
      "open_interest": 968197530,
      "price": 105306.5,
      "strategy": "COMBO_PERP_VS_FUTURE",
      "tick_direction": 0,
      "timestamp": 1748936294661,
      "trade_id": "369968310"
    },
    {
      "amount": 150,
      "basis": -0.33999999999650754,
      "block_trade_id": "",
      "combo_id": "BTC-FS-6JUN25_PERP",
      "combo_trade_id": "369968313",
      "date": "2025-11-04 11:00:00",
      "direction": "buy",
      "funding": 0.00001299,
      "index_price": 105308.34,
      "instrument_name": "BTC-PERPETUAL",
      "maturity": "PERPETUAL",
      "oi_before": 968197530,
      "oi_change": null,
      "open_interest": 968197530,
      "price": 105308,
      "strategy": "COMBO_PERP_VS_FUTURE",
      "tick_direction": 0,
      "timestamp": 1748936295702,
      "trade_id": "369968315"
    },
    {
      "amount": 500,
      "basis": -2.889999999999418,
      "block_trade_id": "",
      "combo_id": "BTC-FS-6JUN25_PERP",
      "combo_trade_id": "369968338",
      "date": "2025-11-04 11:00:00",
      "direction": "buy",
      "funding": 0.00001299,
      "index_price": 105310.39,
      "instrument_name": "BTC-PERPETUAL",
      "maturity": "PERPETUAL",
      "oi_before": 968194400,
      "oi_change": null,
      "open_interest": 968194400,
      "price": 105307.5,
      "strategy": "COMBO_PERP_VS_FUTURE",
      "tick_direction": 0,
      "timestamp": 1748936320292,
      "trade_id": "369968340"
    }
  ],
  "meta": {
    "next_cursor": "eyJ0aW1lc3RhbXAiOiIxNzQ4OTk0NTQ5NDUyIiwidHJhZGVfaWQiOiIzNzAwNDk3NTEifQ=="
  }
}
GET/api/v1/perpetuals/trades/summary
$0.10 default
Description

Perpetual swaps data — pay per request

Documentation

Perpetuals Trades Summary

Returns aggregated trade statistics for perpetual swaps grouped by a chosen axis. One compact call replaces scanning individual trades. Returns grouped stats: trade_count, volume, buy/sell_volume, net_oi_change, block stats, avg_price, vwap. Group by: exchange, instrument_name, direction, or strategy.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "block_only": {
      "default": false,
      "description": "If true, only include block trades.",
      "required": false,
      "type": "boolean",
      "x-parameter-location": "query"
    },
    "currency": {
      "description": "Base currency (e.g. BTC, ETH)",
      "example": "BTC",
      "required": true,
      "type": "string",
      "x-parameter-location": "query"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "direction": {
      "description": "Filter by trade direction",
      "enum": [
        "buy",
        "sell"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance)",
      "example": "deribit",
      "required": true,
      "type": "string",
      "x-parameter-location": "query"
    },
    "group_by": {
      "description": "Axis to group results by",
      "enum": [
        "exchange",
        "instrument_name",
        "direction",
        "strategy"
      ],
      "required": true,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "min_amount": {
      "description": "Minimum trade amount (in contracts).",
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "strategy": {
      "description": "Filter by strategy label. Accepts comma-separated values.",
      "enum": [
        "COMBO_HEDGE_ROLL_TO_FUTURE",
        "COMBO_HEDGE_ROLL_TO_PERP",
        "COMBO_MULTI_LEG_1",
        "COMBO_PERP_VS_FUTURE",
        "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"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [
    "exchange",
    "currency",
    "group_by"
  ],
  "type": "object"
}
Request schema
{
  "properties": {
    "block_only": {
      "default": false,
      "description": "If true, only include block trades.",
      "type": "boolean"
    },
    "currency": {
      "description": "Base currency (e.g. BTC, ETH)",
      "example": "BTC",
      "type": "string"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "type": "string"
    },
    "direction": {
      "description": "Filter by trade direction",
      "enum": [
        "buy",
        "sell"
      ],
      "type": "string"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance)",
      "example": "deribit",
      "type": "string"
    },
    "group_by": {
      "description": "Axis to group results by",
      "enum": [
        "exchange",
        "instrument_name",
        "direction",
        "strategy"
      ],
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "min_amount": {
      "description": "Minimum trade amount (in contracts).",
      "type": "number"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "strategy": {
      "description": "Filter by strategy label. Accepts comma-separated values.",
      "type": "string"
    }
  },
  "required": [
    "exchange",
    "currency",
    "group_by"
  ],
  "type": "object"
}
Example request
{
  "block_only": false,
  "currency": "BTC",
  "cursor": "test",
  "direction": "buy",
  "end": "2026-07-21T10:00:00.000Z",
  "exchange": "deribit",
  "group_by": "exchange",
  "limit": 100,
  "min_amount": 1,
  "sort_dir": "ASC",
  "start": "2026-07-14T10:00:00.000Z",
  "strategy": "test"
}
Example response
{
  "data": [
    {
      "avg_price": 95000,
      "block_trade_count": 12,
      "block_trade_volume": 800,
      "buy_volume": 6500.3,
      "group_key": "BTC-PERPETUAL",
      "net_oi_change": 450.2,
      "sell_volume": 5845.3,
      "trade_count": 5000,
      "volume": 12345.6,
      "vwap": 95050
    }
  ],
  "metadata": {
    "group_by": "instrument_name",
    "total_trades": 5000,
    "total_volume": 12345.6
  }
}
GET/api/v1/perpetuals/volume
$0.10 default
Description

Perpetual swaps data — pay per request

Documentation

Perpetuals Volume Stats

Returns rolling 24h volume metrics (base and USD) for perpetual instruments filtered by currency with optional aggregation and interval bucketing.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance, okx, bybit, hyperliquid, kraken, nado)",
      "example": "deribit",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name": {
      "description": "Full instrument identifier (e.g., BTC-PERPETUAL, BTC-29MAR24-70000-C)",
      "example": "BTC-PERPETUAL",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for bucketing results",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [],
  "type": "object"
}
Request schema
{
  "properties": {
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "type": "string"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "exchange": {
      "description": "Exchange name (e.g., deribit, binance, okx, bybit, hyperliquid, kraken, nado)",
      "example": "deribit",
      "type": "string"
    },
    "instrument_name": {
      "description": "Full instrument identifier (e.g., BTC-PERPETUAL, BTC-29MAR24-70000-C)",
      "example": "BTC-PERPETUAL",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for bucketing results",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "type": "string"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    }
  },
  "type": "object"
}
Response schema
{
  "allOf": [
    {
      "properties": {
        "data": {
          "items": {
            "type": "array"
          },
          "type": "array"
        },
        "meta": {
          "properties": {
            "next_cursor": {
              "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,
              "type": "string"
            }
          },
          "required": [
            "next_cursor"
          ],
          "type": "object",
          "x-openapi-ref": "#/components/schemas/PaginationMetaEntity"
        }
      },
      "required": [
        "data",
        "meta"
      ],
      "type": "object",
      "x-openapi-ref": "#/components/schemas/PaginatedResponse"
    },
    {
      "properties": {
        "data": {
          "type": "array"
        }
      }
    }
  ]
}
Example request
{
  "cursor": "test",
  "end": "2026-07-21T10:00:00.000Z",
  "exchange": "deribit",
  "instrument_name": "BTC-PERPETUAL",
  "limit": 100,
  "resolution": "1m",
  "sort_dir": "ASC",
  "start": "2026-07-14T10:00:00.000Z"
}
Example response
{
  "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="
  }
}
GET/api/v1/predictions/catalog
$0.10 default
Description

Prediction markets data — pay per request

Documentation

Predictions Catalog

Returns a list of available prediction market instruments. Supports filtering by exchange, category, event_slug, and keyword search.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "category": {
      "description": "Filter by market category (e.g., crypto, politics, sports)",
      "example": "crypto",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "cursor": {
      "description": "Pagination cursor from a previous response",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "event_slug": {
      "description": "Filter by event slug (parent event grouping)",
      "example": "will-bitcoin-reach-250000-by-december-31-2026",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "default": "polymarket",
      "description": "Filter by exchange (polymarket or hyperliquid)",
      "enum": [
        "polymarket",
        "hyperliquid"
      ],
      "example": "polymarket",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "keyword": {
      "description": "Keyword search to filter instruments by name (case-insensitive partial match)",
      "example": "bitcoin",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of instruments to return (1-1000)",
      "example": 100,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    }
  },
  "required": [],
  "type": "object"
}
Request schema
{
  "properties": {
    "category": {
      "description": "Filter by market category (e.g., crypto, politics, sports)",
      "example": "crypto",
      "type": "string"
    },
    "cursor": {
      "description": "Pagination cursor from a previous response",
      "type": "string"
    },
    "event_slug": {
      "description": "Filter by event slug (parent event grouping)",
      "example": "will-bitcoin-reach-250000-by-december-31-2026",
      "type": "string"
    },
    "exchange": {
      "default": "polymarket",
      "description": "Filter by exchange (polymarket or hyperliquid)",
      "enum": [
        "polymarket",
        "hyperliquid"
      ],
      "example": "polymarket",
      "type": "string"
    },
    "keyword": {
      "description": "Keyword search to filter instruments by name (case-insensitive partial match)",
      "example": "bitcoin",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of instruments to return (1-1000)",
      "example": 100,
      "type": "number"
    }
  },
  "type": "object"
}
Example request
{
  "category": "crypto",
  "cursor": "test",
  "event_slug": "will-bitcoin-reach-250000-by-december-31-2026",
  "exchange": "polymarket",
  "keyword": "bitcoin",
  "limit": 100
}
Example response
{
  "data": [
    {
      "exchange": "polymarket",
      "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": "hyperliquid",
      "instrument_name": "btc-above-79980-20260505-0600"
    }
  ],
  "success": true
}
GET/api/v1/predictions/categories
$0.10 default
Description

Prediction markets data — pay per request

Documentation

Predictions Categories

Returns a list of all prediction market categories with instrument counts.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "exchange": {
      "default": "polymarket",
      "description": "Filter by exchange (polymarket or hyperliquid)",
      "enum": [
        "polymarket",
        "hyperliquid"
      ],
      "example": "polymarket",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [],
  "type": "object"
}
Request schema
{
  "properties": {
    "exchange": {
      "default": "polymarket",
      "description": "Filter by exchange (polymarket or hyperliquid)",
      "enum": [
        "polymarket",
        "hyperliquid"
      ],
      "example": "polymarket",
      "type": "string"
    }
  },
  "type": "object"
}
Example request
{
  "exchange": "polymarket"
}
Example response
[
  {
    "category": "crypto",
    "count": 45
  },
  {
    "category": "politics",
    "count": 32
  },
  {
    "category": "sports",
    "count": 18
  }
]
GET/api/v1/predictions/metadata
$0.10 default
Description

Prediction markets data — pay per request

Documentation

Predictions Metadata

Returns metadata for a specific prediction instrument including data availability, total record count, and pagination information.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "exchange": {
      "default": "polymarket",
      "description": "Exchange name (polymarket or hyperliquid)",
      "enum": [
        "polymarket",
        "hyperliquid"
      ],
      "example": "polymarket",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name": {
      "description": "Instrument name",
      "example": "will-bitcoin-reach-250000-by-december-31-2026-YES",
      "required": true,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Number of records per page for pagination calculation",
      "example": 100,
      "maximum": 100,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    }
  },
  "required": [
    "instrument_name"
  ],
  "type": "object"
}
Request schema
{
  "properties": {
    "exchange": {
      "default": "polymarket",
      "description": "Exchange name (polymarket or hyperliquid)",
      "enum": [
        "polymarket",
        "hyperliquid"
      ],
      "example": "polymarket",
      "type": "string"
    },
    "instrument_name": {
      "description": "Instrument name",
      "example": "will-bitcoin-reach-250000-by-december-31-2026-YES",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Number of records per page for pagination calculation",
      "example": 100,
      "maximum": 100,
      "minimum": 1,
      "type": "number"
    }
  },
  "required": [
    "instrument_name"
  ],
  "type": "object"
}
Response schema
{
  "properties": {
    "end_date": {
      "description": "End date of available data (ISO 8601 format)",
      "example": "2025-11-21T23:59:00.000Z",
      "type": "string"
    },
    "exchange": {
      "description": "Exchange name",
      "example": "deribit",
      "type": "string"
    },
    "instrument_name": {
      "description": "Instrument name",
      "example": "BTC-PERPETUAL",
      "type": "string"
    },
    "start_date": {
      "description": "Start date of available data (ISO 8601 format)",
      "example": "2020-01-01T00:00:00.000Z",
      "type": "string"
    },
    "total_count": {
      "description": "Total count of records available",
      "example": 1500000,
      "type": "number"
    },
    "total_pages": {
      "description": "Total number of pages based on the provided limit",
      "example": 15000,
      "type": "number"
    }
  },
  "required": [
    "exchange",
    "instrument_name",
    "start_date",
    "end_date",
    "total_count",
    "total_pages"
  ],
  "type": "object",
  "x-openapi-ref": "#/components/schemas/MetadataResponseEntity"
}
Example request
{
  "exchange": "polymarket",
  "instrument_name": "will-bitcoin-reach-250000-by-december-31-2026-YES",
  "limit": 100
}
Example response
{
  "end_date": "2025-11-21T23:59:00.000Z",
  "exchange": "deribit",
  "instrument_name": "BTC-PERPETUAL",
  "start_date": "2020-01-01T00:00:00.000Z",
  "total_count": 1500000,
  "total_pages": 15000
}
GET/api/v1/predictions/ohlcvt
$0.10 default
Description

Prediction markets data — pay per request

Documentation

Predictions OHLCVT Market Data

Retrieves Open, High, Low, Close, Volume, Trades data for prediction market instruments. Prices represent probabilities (0.0-1.0).

**Key Features:**
- Historical probability-based OHLC candlestick data
- Buy/sell volume breakdown
- Trade count statistics
- Support for multiple resolutions (1m, 5m, 15m, 1h, 4h, 1d)

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "category": {
      "description": "Filter by market category (e.g., crypto, politics, sports)",
      "example": "crypto",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "event_slug": {
      "description": "Filter by event slug (parent event grouping)",
      "example": "will-bitcoin-reach-250000-by-december-31-2026",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "default": "polymarket",
      "description": "Exchange name (polymarket or hyperliquid)",
      "enum": [
        "polymarket",
        "hyperliquid"
      ],
      "example": "polymarket",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name": {
      "description": "Full prediction instrument identifier (e.g., will-bitcoin-reach-250000-by-december-31-2026-YES)",
      "example": "will-bitcoin-reach-250000-by-december-31-2026-YES",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "outcome": {
      "description": "Filter by outcome side",
      "enum": [
        "YES",
        "NO"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for bucketing results",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [],
  "type": "object"
}
Request schema
{
  "properties": {
    "category": {
      "description": "Filter by market category (e.g., crypto, politics, sports)",
      "example": "crypto",
      "type": "string"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "type": "string"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "event_slug": {
      "description": "Filter by event slug (parent event grouping)",
      "example": "will-bitcoin-reach-250000-by-december-31-2026",
      "type": "string"
    },
    "exchange": {
      "default": "polymarket",
      "description": "Exchange name (polymarket or hyperliquid)",
      "enum": [
        "polymarket",
        "hyperliquid"
      ],
      "example": "polymarket",
      "type": "string"
    },
    "instrument_name": {
      "description": "Full prediction instrument identifier (e.g., will-bitcoin-reach-250000-by-december-31-2026-YES)",
      "example": "will-bitcoin-reach-250000-by-december-31-2026-YES",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "outcome": {
      "description": "Filter by outcome side",
      "enum": [
        "YES",
        "NO"
      ],
      "type": "string"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for bucketing results",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "type": "string"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    }
  },
  "type": "object"
}
Example request
{
  "category": "crypto",
  "cursor": "test",
  "end": "2026-07-21T10:00:00.000Z",
  "event_slug": "will-bitcoin-reach-250000-by-december-31-2026",
  "exchange": "polymarket",
  "instrument_name": "will-bitcoin-reach-250000-by-december-31-2026-YES",
  "limit": 100,
  "outcome": "YES",
  "resolution": "1m",
  "sort_dir": "ASC",
  "start": "2026-07-14T10:00:00.000Z"
}
Example response
{
  "data": [
    {
      "buy_trades_count": 50,
      "buy_volume": 750.3,
      "category": "crypto",
      "close": 0.37,
      "condition_id": "0xabc...",
      "date": "2026-02-20 12:00:00",
      "event_slug": "will-bitcoin-reach-250000-by-december-31-2026",
      "exchange": "polymarket",
      "high": 0.38,
      "instrument_name": "will-bitcoin-reach-250000-by-december-31-2026-YES",
      "last_probability": 0.37,
      "low": 0.33,
      "open": 0.35,
      "sell_trades_count": 35,
      "sell_volume": 500.2,
      "token_id": "12345",
      "trades_count": 85,
      "volume": 1250.5,
      "vwap": 0.355
    }
  ],
  "meta": {
    "next_cursor": null
  },
  "success": true
}
GET/api/v1/predictions/orderbook-raw
$0.10 default
Description

Prediction markets data — pay per request

Documentation

Predictions L2 Orderbook Raw Snapshots

Returns raw L2 orderbook snapshots for prediction instruments with full bid/ask arrays.

**Key Features:**
- Full bid/ask price levels
- Pre-computed liquidity at 3 depth levels (10, 20, 50)
- Order book imbalance per depth
- Microprice (liquidity-weighted mid-price)

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "category": {
      "description": "Filter by market category (e.g., crypto, politics, sports)",
      "example": "crypto",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "event_slug": {
      "description": "Filter by event slug (parent event grouping)",
      "example": "will-bitcoin-reach-250000-by-december-31-2026",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "default": "polymarket",
      "description": "Exchange name (polymarket or hyperliquid)",
      "enum": [
        "polymarket",
        "hyperliquid"
      ],
      "example": "polymarket",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name": {
      "description": "Full prediction instrument identifier (e.g., will-bitcoin-reach-250000-by-december-31-2026-YES)",
      "example": "will-bitcoin-reach-250000-by-december-31-2026-YES",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "outcome": {
      "description": "Filter by outcome side",
      "enum": [
        "YES",
        "NO"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for bucketing results",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [],
  "type": "object"
}
Request schema
{
  "properties": {
    "category": {
      "description": "Filter by market category (e.g., crypto, politics, sports)",
      "example": "crypto",
      "type": "string"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "type": "string"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "event_slug": {
      "description": "Filter by event slug (parent event grouping)",
      "example": "will-bitcoin-reach-250000-by-december-31-2026",
      "type": "string"
    },
    "exchange": {
      "default": "polymarket",
      "description": "Exchange name (polymarket or hyperliquid)",
      "enum": [
        "polymarket",
        "hyperliquid"
      ],
      "example": "polymarket",
      "type": "string"
    },
    "instrument_name": {
      "description": "Full prediction instrument identifier (e.g., will-bitcoin-reach-250000-by-december-31-2026-YES)",
      "example": "will-bitcoin-reach-250000-by-december-31-2026-YES",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "outcome": {
      "description": "Filter by outcome side",
      "enum": [
        "YES",
        "NO"
      ],
      "type": "string"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for bucketing results",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "type": "string"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    }
  },
  "type": "object"
}
Example request
{
  "category": "crypto",
  "cursor": "test",
  "end": "2026-07-21T10:00:00.000Z",
  "event_slug": "will-bitcoin-reach-250000-by-december-31-2026",
  "exchange": "polymarket",
  "instrument_name": "will-bitcoin-reach-250000-by-december-31-2026-YES",
  "limit": 100,
  "outcome": "YES",
  "resolution": "1m",
  "sort_dir": "ASC",
  "start": "2026-07-14T10:00:00.000Z"
}
Example response
{
  "data": [
    {
      "ask_liquidity_10": 2000,
      "asks": [
        {
          "price": 0.38,
          "size": 400
        },
        {
          "price": 0.39,
          "size": 250
        }
      ],
      "bid_liquidity_10": 2500,
      "bids": [
        {
          "price": 0.36,
          "size": 500
        },
        {
          "price": 0.35,
          "size": 300
        }
      ],
      "date": "2026-02-20T12:34:21.437Z",
      "depth": 20,
      "exchange": "polymarket",
      "instrument_name": "will-bitcoin-reach-250000-by-december-31-2026-YES",
      "microprice": 0.371,
      "timestamp": 1771523261437
    }
  ],
  "meta": {
    "next_cursor": null
  },
  "success": true
}
GET/api/v1/predictions/snapshot
$0.10 default
Description

Prediction markets data — pay per request

Documentation

Predictions Snapshot

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.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "category": {
      "description": "Filter by market category (e.g., crypto, politics, sports)",
      "example": "crypto",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "date": {
      "description": "Exact date/time for the snapshot in ISO 8601 format (UTC). If omitted, returns the latest available snapshot.",
      "example": "2026-01-20T10:00:00Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "event_slug": {
      "description": "Filter by event slug",
      "example": "will-bitcoin-reach-250000-by-december-31-2026",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "default": "polymarket",
      "description": "Exchange name (polymarket or hyperliquid)",
      "enum": [
        "polymarket",
        "hyperliquid"
      ],
      "example": "polymarket",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name": {
      "description": "Filter to a specific instrument name (case-insensitive exact match)",
      "example": "will-bitcoin-reach-250000-by-december-31-2026-YES",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "keyword": {
      "description": "Keyword search to filter instruments by name (case-insensitive partial match)",
      "example": "bitcoin",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for the snapshot. At 1m (default), returns raw minute-level data. At higher resolutions (5m, 1h, etc.), data is aggregated into the specified bucket.",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [],
  "type": "object"
}
Request schema
{
  "properties": {
    "category": {
      "description": "Filter by market category (e.g., crypto, politics, sports)",
      "example": "crypto",
      "type": "string"
    },
    "date": {
      "description": "Exact date/time for the snapshot in ISO 8601 format (UTC). If omitted, returns the latest available snapshot.",
      "example": "2026-01-20T10:00:00Z",
      "format": "date-time",
      "type": "string"
    },
    "event_slug": {
      "description": "Filter by event slug",
      "example": "will-bitcoin-reach-250000-by-december-31-2026",
      "type": "string"
    },
    "exchange": {
      "default": "polymarket",
      "description": "Exchange name (polymarket or hyperliquid)",
      "enum": [
        "polymarket",
        "hyperliquid"
      ],
      "example": "polymarket",
      "type": "string"
    },
    "instrument_name": {
      "description": "Filter to a specific instrument name (case-insensitive exact match)",
      "example": "will-bitcoin-reach-250000-by-december-31-2026-YES",
      "type": "string"
    },
    "keyword": {
      "description": "Keyword search to filter instruments by name (case-insensitive partial match)",
      "example": "bitcoin",
      "type": "string"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for the snapshot. At 1m (default), returns raw minute-level data. At higher resolutions (5m, 1h, etc.), data is aggregated into the specified bucket.",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "type": "string"
    }
  },
  "type": "object"
}
Example request
{
  "category": "crypto",
  "date": "2026-01-20T10:00:00Z",
  "event_slug": "will-bitcoin-reach-250000-by-december-31-2026",
  "exchange": "polymarket",
  "instrument_name": "will-bitcoin-reach-250000-by-december-31-2026-YES",
  "keyword": "bitcoin",
  "resolution": "1m"
}
Example response
{
  "data": [
    {
      "ask_price": 0.38,
      "bid_price": 0.36,
      "date": "2026-02-20 12:00:00",
      "exchange": "polymarket",
      "instrument_name": "will-bitcoin-reach-250000-by-december-31-2026-YES",
      "probability": 0.37,
      "total_liquidity": 5000
    }
  ],
  "meta": {
    "date": "2026-02-20T12:00:00.000Z",
    "next_date": "2026-02-20T12:01:00.000Z"
  },
  "success": true
}
GET/api/v1/predictions/ticker-history
$0.10 default
Description

Prediction markets data — pay per request

Documentation

Predictions Ticker History

Returns historical ticker data for prediction instruments including probability OHLC, bid/ask spread, and liquidity metrics.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "category": {
      "description": "Filter by market category (e.g., crypto, politics, sports)",
      "example": "crypto",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "event_slug": {
      "description": "Filter by event slug (parent event grouping)",
      "example": "will-bitcoin-reach-250000-by-december-31-2026",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "default": "polymarket",
      "description": "Exchange name (polymarket or hyperliquid)",
      "enum": [
        "polymarket",
        "hyperliquid"
      ],
      "example": "polymarket",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name": {
      "description": "Full prediction instrument identifier (e.g., will-bitcoin-reach-250000-by-december-31-2026-YES)",
      "example": "will-bitcoin-reach-250000-by-december-31-2026-YES",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "outcome": {
      "description": "Filter by outcome side",
      "enum": [
        "YES",
        "NO"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for bucketing results",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [],
  "type": "object"
}
Request schema
{
  "properties": {
    "category": {
      "description": "Filter by market category (e.g., crypto, politics, sports)",
      "example": "crypto",
      "type": "string"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "type": "string"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "event_slug": {
      "description": "Filter by event slug (parent event grouping)",
      "example": "will-bitcoin-reach-250000-by-december-31-2026",
      "type": "string"
    },
    "exchange": {
      "default": "polymarket",
      "description": "Exchange name (polymarket or hyperliquid)",
      "enum": [
        "polymarket",
        "hyperliquid"
      ],
      "example": "polymarket",
      "type": "string"
    },
    "instrument_name": {
      "description": "Full prediction instrument identifier (e.g., will-bitcoin-reach-250000-by-december-31-2026-YES)",
      "example": "will-bitcoin-reach-250000-by-december-31-2026-YES",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "outcome": {
      "description": "Filter by outcome side",
      "enum": [
        "YES",
        "NO"
      ],
      "type": "string"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for bucketing results",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "type": "string"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    }
  },
  "type": "object"
}
Example request
{
  "category": "crypto",
  "cursor": "test",
  "end": "2026-07-21T10:00:00.000Z",
  "event_slug": "will-bitcoin-reach-250000-by-december-31-2026",
  "exchange": "polymarket",
  "instrument_name": "will-bitcoin-reach-250000-by-december-31-2026-YES",
  "limit": 100,
  "outcome": "YES",
  "resolution": "1m",
  "sort_dir": "ASC",
  "start": "2026-07-14T10:00:00.000Z"
}
Example response
{
  "data": [
    {
      "ask_price": 0.38,
      "bid_ask_spread": 0.02,
      "bid_price": 0.36,
      "complement_probability": 0.63,
      "date": "2026-02-20 12:00:00",
      "exchange": "polymarket",
      "instrument_name": "will-bitcoin-reach-250000-by-december-31-2026-YES",
      "probability": 0.37,
      "probability_high": 0.38,
      "probability_low": 0.33,
      "probability_open": 0.35,
      "total_liquidity": 5000
    }
  ],
  "meta": {
    "next_cursor": null
  },
  "success": true
}
GET/api/v1/predictions/trades
$0.10 default
Description

Prediction markets data — pay per request

Documentation

Predictions Trade History

Returns individual prediction market trades with price (probability), size, side, and outcome information. Supports cursor-based pagination.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "category": {
      "description": "Filter by market category (e.g., crypto, politics, sports)",
      "example": "crypto",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "event_slug": {
      "description": "Filter by event slug (parent event grouping)",
      "example": "will-bitcoin-reach-250000-by-december-31-2026",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "default": "polymarket",
      "description": "Exchange name (polymarket or hyperliquid)",
      "enum": [
        "polymarket",
        "hyperliquid"
      ],
      "example": "polymarket",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name": {
      "description": "Full prediction instrument identifier (e.g., will-bitcoin-reach-250000-by-december-31-2026-YES)",
      "example": "will-bitcoin-reach-250000-by-december-31-2026-YES",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "outcome": {
      "description": "Filter by outcome side",
      "enum": [
        "YES",
        "NO"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [],
  "type": "object"
}
Request schema
{
  "properties": {
    "category": {
      "description": "Filter by market category (e.g., crypto, politics, sports)",
      "example": "crypto",
      "type": "string"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "type": "string"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "event_slug": {
      "description": "Filter by event slug (parent event grouping)",
      "example": "will-bitcoin-reach-250000-by-december-31-2026",
      "type": "string"
    },
    "exchange": {
      "default": "polymarket",
      "description": "Exchange name (polymarket or hyperliquid)",
      "enum": [
        "polymarket",
        "hyperliquid"
      ],
      "example": "polymarket",
      "type": "string"
    },
    "instrument_name": {
      "description": "Full prediction instrument identifier (e.g., will-bitcoin-reach-250000-by-december-31-2026-YES)",
      "example": "will-bitcoin-reach-250000-by-december-31-2026-YES",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "outcome": {
      "description": "Filter by outcome side",
      "enum": [
        "YES",
        "NO"
      ],
      "type": "string"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    }
  },
  "type": "object"
}
Example request
{
  "category": "crypto",
  "cursor": "test",
  "end": "2026-07-21T10:00:00.000Z",
  "event_slug": "will-bitcoin-reach-250000-by-december-31-2026",
  "exchange": "polymarket",
  "instrument_name": "will-bitcoin-reach-250000-by-december-31-2026-YES",
  "limit": 100,
  "outcome": "YES",
  "sort_dir": "ASC",
  "start": "2026-07-14T10:00:00.000Z"
}
Example response
{
  "data": [
    {
      "category": "crypto",
      "date": "2026-02-20T12:34:21.437Z",
      "exchange": "polymarket",
      "fee_rate_bps": 0,
      "instrument_name": "will-bitcoin-reach-250000-by-december-31-2026-YES",
      "outcome": "YES",
      "price": 0.37,
      "side": "buy",
      "size": 100,
      "timestamp": 1771523261437,
      "trade_hash": "abc123def456"
    }
  ],
  "meta": {
    "next_cursor": null
  },
  "success": true
}
GET/api/v1/spot/catalog
$0.10 default
Description

Spot market data — pay per request

Documentation

Spot Catalog

Returns a list of available spot instruments.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "currency": {
      "description": "Base currency filter (e.g., BTC, ETH, SOL)",
      "example": "BTC",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "description": "Exchange name (e.g., binance, coinbase, bybit, okx)",
      "example": "binance",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "quote_currency": {
      "description": "Quote currency filter (e.g., USDT, USDC, USD)",
      "example": "USDT",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [],
  "type": "object"
}
Request schema
{
  "properties": {
    "currency": {
      "description": "Base currency filter (e.g., BTC, ETH, SOL)",
      "example": "BTC",
      "type": "string"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "type": "string"
    },
    "exchange": {
      "description": "Exchange name (e.g., binance, coinbase, bybit, okx)",
      "example": "binance",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "quote_currency": {
      "description": "Quote currency filter (e.g., USDT, USDC, USD)",
      "example": "USDT",
      "type": "string"
    }
  },
  "type": "object"
}
Example request
{
  "currency": "BTC",
  "cursor": "test",
  "exchange": "binance",
  "limit": 100,
  "quote_currency": "USDT"
}
Example response
[
  {
    "currency": "BTC",
    "exchange": "binance",
    "instrument_name": "BTCUSDT",
    "quote_currency": "USDT"
  },
  {
    "currency": "ETH",
    "exchange": "binance",
    "instrument_name": "ETHUSDT",
    "quote_currency": "USDT"
  },
  {
    "currency": "BTC",
    "exchange": "coinbase",
    "instrument_name": "BTC-USD",
    "quote_currency": "USD"
  }
]
GET/api/v1/spot/l2-orderbook
$0.10 default
Description

Spot market data — pay per request

Documentation

Spot L2 Orderbook

Returns aggregated L2 orderbook depth metrics for spot instruments.

**Key Features:**
- Bid/ask liquidity at 4 depth levels (10, 20, 50, 100 levels)
- Order book imbalance metrics (OHLC + average) per depth
- Microprice (liquidity-weighted mid-price)
- Snapshot count per time bucket
- Support for multiple resolutions (1m, 5m, 15m, 1h, 4h, 1d)

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "currency": {
      "description": "Base currency (e.g., BTC, ETH, SOL)",
      "example": "BTC",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "description": "Exchange name (e.g., binance, coinbase, bybit, okx)",
      "example": "binance",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name": {
      "description": "Full spot instrument identifier (e.g., BTCUSDT, BTC-USD, BTC-USDT)",
      "example": "BTCUSDT",
      "required": true,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "quote_currency": {
      "description": "Quote currency (e.g., USDT, USDC, USD)",
      "example": "USDT",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for bucketing results",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [
    "instrument_name"
  ],
  "type": "object"
}
Request schema
{
  "properties": {
    "currency": {
      "description": "Base currency (e.g., BTC, ETH, SOL)",
      "example": "BTC",
      "type": "string"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "type": "string"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "exchange": {
      "description": "Exchange name (e.g., binance, coinbase, bybit, okx)",
      "example": "binance",
      "type": "string"
    },
    "instrument_name": {
      "description": "Full spot instrument identifier (e.g., BTCUSDT, BTC-USD, BTC-USDT)",
      "example": "BTCUSDT",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "quote_currency": {
      "description": "Quote currency (e.g., USDT, USDC, USD)",
      "example": "USDT",
      "type": "string"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for bucketing results",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "type": "string"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    }
  },
  "required": [
    "instrument_name"
  ],
  "type": "object"
}
Response schema
{
  "allOf": [
    {
      "properties": {
        "data": {
          "items": {
            "type": "array"
          },
          "type": "array"
        },
        "meta": {
          "properties": {
            "next_cursor": {
              "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,
              "type": "string"
            }
          },
          "required": [
            "next_cursor"
          ],
          "type": "object",
          "x-openapi-ref": "#/components/schemas/PaginationMetaEntity"
        }
      },
      "required": [
        "data",
        "meta"
      ],
      "type": "object",
      "x-openapi-ref": "#/components/schemas/PaginatedResponse"
    },
    {
      "properties": {
        "data": {
          "type": "array"
        }
      }
    }
  ]
}
Example request
{
  "currency": "BTC",
  "cursor": "test",
  "end": "2026-07-21T10:00:00.000Z",
  "exchange": "binance",
  "instrument_name": "BTCUSDT",
  "limit": 100,
  "quote_currency": "USDT",
  "resolution": "1m",
  "sort_dir": "ASC",
  "start": "2026-07-14T10:00:00.000Z"
}
Example response
{
  "data": [
    {
      "ask_liq_100_avg": 39.5,
      "ask_liq_100_close": 42,
      "ask_liq_100_high": 50,
      "ask_liq_100_low": 30,
      "ask_liq_100_open": 40.834,
      "ask_liq_10_avg": 5,
      "ask_liq_10_close": 5.1,
      "ask_liq_10_high": 6.2,
      "ask_liq_10_low": 4.1,
      "ask_liq_10_open": 5.375,
      "ask_liq_20_avg": 5.8,
      "ask_liq_20_close": 6,
      "ask_liq_20_high": 8,
      "ask_liq_20_low": 4.5,
      "ask_liq_20_open": 6.398,
      "ask_liq_50_avg": 18.2,
      "ask_liq_50_close": 19.5,
      "ask_liq_50_high": 22,
      "ask_liq_50_low": 15,
      "ask_liq_50_open": 18.966,
      "bid_liq_100_avg": 13.2,
      "bid_liq_100_close": 14.5,
      "bid_liq_100_high": 18,
      "bid_liq_100_low": 9,
      "bid_liq_100_open": 12.891,
      "bid_liq_10_avg": 0.35,
      "bid_liq_10_close": 0.42,
      "bid_liq_10_high": 0.55,
      "bid_liq_10_low": 0.15,
      "bid_liq_10_open": 0.301,
      "bid_liq_20_avg": 0.45,
      "bid_liq_20_close": 0.5,
      "bid_liq_20_high": 0.8,
      "bid_liq_20_low": 0.2,
      "bid_liq_20_open": 0.359,
      "bid_liq_50_avg": 7.5,
      "bid_liq_50_close": 8.1,
      "bid_liq_50_high": 10.5,
      "bid_liq_50_low": 5.2,
      "bid_liq_50_open": 7.831,
      "currency": "BTC",
      "date": "2026-03-06 12:00:00",
      "exchange": "binance",
      "imbalance_100_avg": -0.48,
      "imbalance_100_close": -0.45,
      "imbalance_100_high": -0.2,
      "imbalance_100_low": -0.7,
      "imbalance_100_open": -0.52,
      "imbalance_10_avg": -0.78,
      "imbalance_10_close": -0.82,
      "imbalance_10_high": -0.5,
      "imbalance_10_low": -0.95,
      "imbalance_10_open": -0.894,
      "imbalance_20_avg": -0.78,
      "imbalance_20_close": -0.82,
      "imbalance_20_high": -0.5,
      "imbalance_20_low": -0.95,
      "imbalance_20_open": -0.894,
      "imbalance_50_avg": -0.38,
      "imbalance_50_close": -0.35,
      "imbalance_50_high": -0.1,
      "imbalance_50_low": -0.6,
      "imbalance_50_open": -0.416,
      "instrument_name": "BTCUSDT",
      "microprice_avg": 90165.2,
      "microprice_close": 90210.5,
      "microprice_high": 90340,
      "microprice_low": 89980,
      "microprice_open": 90125.9,
      "quote_currency": "USDT",
      "snapshot_count": 60
    }
  ],
  "meta": {
    "next_cursor": "eyJtaW51dGUiOiIyMDI2LTAzLTA2IDEyOjAxOjAwIn0="
  }
}
GET/api/v1/spot/l2-orderbook-raw
$0.10 default
Description

Spot market data — pay per request

Documentation

Spot L2 Orderbook Raw Snapshots

Returns raw L2 orderbook snapshots for spot instruments with full bid/ask arrays.

**Key Features:**
- Full bid/ask price levels (up to 100 levels each)
- Pre-computed liquidity at 4 depth levels (10, 20, 50, 100)
- Order book imbalance per depth
- Microprice (liquidity-weighted mid-price)
- Individual snapshots (not aggregated) — 30-day data retention

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "currency": {
      "description": "Base currency (e.g., BTC, ETH, SOL)",
      "example": "BTC",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "description": "Exchange name (e.g., binance, coinbase, bybit, okx)",
      "example": "binance",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name": {
      "description": "Full spot instrument identifier (e.g., BTCUSDT, BTC-USD, BTC-USDT)",
      "example": "BTCUSDT",
      "required": true,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "quote_currency": {
      "description": "Quote currency (e.g., USDT, USDC, USD)",
      "example": "USDT",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [
    "instrument_name"
  ],
  "type": "object"
}
Request schema
{
  "properties": {
    "currency": {
      "description": "Base currency (e.g., BTC, ETH, SOL)",
      "example": "BTC",
      "type": "string"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "type": "string"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "exchange": {
      "description": "Exchange name (e.g., binance, coinbase, bybit, okx)",
      "example": "binance",
      "type": "string"
    },
    "instrument_name": {
      "description": "Full spot instrument identifier (e.g., BTCUSDT, BTC-USD, BTC-USDT)",
      "example": "BTCUSDT",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "quote_currency": {
      "description": "Quote currency (e.g., USDT, USDC, USD)",
      "example": "USDT",
      "type": "string"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    }
  },
  "required": [
    "instrument_name"
  ],
  "type": "object"
}
Response schema
{
  "allOf": [
    {
      "properties": {
        "data": {
          "items": {
            "type": "array"
          },
          "type": "array"
        },
        "meta": {
          "properties": {
            "next_cursor": {
              "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,
              "type": "string"
            }
          },
          "required": [
            "next_cursor"
          ],
          "type": "object",
          "x-openapi-ref": "#/components/schemas/PaginationMetaEntity"
        }
      },
      "required": [
        "data",
        "meta"
      ],
      "type": "object",
      "x-openapi-ref": "#/components/schemas/PaginatedResponse"
    },
    {
      "properties": {
        "data": {
          "type": "array"
        }
      }
    }
  ]
}
Example request
{
  "currency": "BTC",
  "cursor": "test",
  "end": "2026-07-21T10:00:00.000Z",
  "exchange": "binance",
  "instrument_name": "BTCUSDT",
  "limit": 100,
  "quote_currency": "USDT",
  "sort_dir": "ASC",
  "start": "2026-07-14T10:00:00.000Z"
}
Example response
{
  "data": [
    {
      "ask_liquidity_10": 5.375,
      "ask_liquidity_100": 40.834,
      "ask_liquidity_20": 6.398,
      "ask_liquidity_50": 18.966,
      "asks": [
        {
          "price": 90211,
          "size": 3.085
        },
        {
          "price": 90211.5,
          "size": 0.002
        }
      ],
      "bid_liquidity_10": 0.301,
      "bid_liquidity_100": 12.891,
      "bid_liquidity_20": 0.359,
      "bid_liquidity_50": 7.831,
      "bids": [
        {
          "price": 90209,
          "size": 0.169
        },
        {
          "price": 90208.5,
          "size": 0.002
        }
      ],
      "currency": "BTC",
      "date": "2026-03-06T12:30:00.123Z",
      "depth": 100,
      "exchange": "binance",
      "imbalance_10": -0.894,
      "imbalance_100": -0.52,
      "imbalance_20": -0.894,
      "imbalance_50": -0.416,
      "instrument_name": "BTCUSDT",
      "microprice": 90210.905,
      "quote_currency": "USDT",
      "timestamp": 1772885400123
    }
  ],
  "meta": {
    "next_cursor": "eyJ0aW1lc3RhbXAiOjE3NzI4ODU0MDAxMjN9"
  }
}
GET/api/v1/spot/level1
$0.10 default
Description

Spot market data — pay per request

Documentation

Spot Level 1

Returns level 1 order book data for spot instruments including top-of-book bid/ask prices, sizes, spreads, and liquidity metrics.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "currency": {
      "description": "Base currency (e.g., BTC, ETH, SOL)",
      "example": "BTC",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "description": "Exchange name (e.g., binance, coinbase, bybit, okx)",
      "example": "binance",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name": {
      "description": "Full spot instrument identifier (e.g., BTCUSDT, BTC-USD, BTC-USDT)",
      "example": "BTCUSDT",
      "required": true,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "quote_currency": {
      "description": "Quote currency (e.g., USDT, USDC, USD)",
      "example": "USDT",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for bucketing results",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [
    "instrument_name"
  ],
  "type": "object"
}
Request schema
{
  "properties": {
    "currency": {
      "description": "Base currency (e.g., BTC, ETH, SOL)",
      "example": "BTC",
      "type": "string"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "type": "string"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "exchange": {
      "description": "Exchange name (e.g., binance, coinbase, bybit, okx)",
      "example": "binance",
      "type": "string"
    },
    "instrument_name": {
      "description": "Full spot instrument identifier (e.g., BTCUSDT, BTC-USD, BTC-USDT)",
      "example": "BTCUSDT",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "quote_currency": {
      "description": "Quote currency (e.g., USDT, USDC, USD)",
      "example": "USDT",
      "type": "string"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for bucketing results",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "type": "string"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    }
  },
  "required": [
    "instrument_name"
  ],
  "type": "object"
}
Response schema
{
  "allOf": [
    {
      "properties": {
        "data": {
          "items": {
            "type": "array"
          },
          "type": "array"
        },
        "meta": {
          "properties": {
            "next_cursor": {
              "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,
              "type": "string"
            }
          },
          "required": [
            "next_cursor"
          ],
          "type": "object",
          "x-openapi-ref": "#/components/schemas/PaginationMetaEntity"
        }
      },
      "required": [
        "data",
        "meta"
      ],
      "type": "object",
      "x-openapi-ref": "#/components/schemas/PaginatedResponse"
    },
    {
      "properties": {
        "data": {
          "type": "array"
        }
      }
    }
  ]
}
Example request
{
  "currency": "BTC",
  "cursor": "test",
  "end": "2026-07-21T10:00:00.000Z",
  "exchange": "binance",
  "instrument_name": "BTCUSDT",
  "limit": 100,
  "quote_currency": "USDT",
  "resolution": "1m",
  "sort_dir": "ASC",
  "start": "2026-07-14T10:00:00.000Z"
}
Example response
{
  "data": [
    {
      "ask_price_close": 90211,
      "ask_price_high": 90341,
      "ask_price_low": 89981,
      "ask_price_open": 90126,
      "ask_size_avg": 0.5,
      "ask_size_close": 0.7,
      "ask_size_high": 1.5,
      "ask_size_low": 0.05,
      "ask_size_open": 0.4,
      "bid_ask_spread_avg": 1.8,
      "bid_ask_spread_close": 2,
      "bid_ask_spread_high": 5,
      "bid_ask_spread_low": 0.5,
      "bid_ask_spread_open": 2,
      "bid_price_close": 90209,
      "bid_price_high": 90339,
      "bid_price_low": 89979,
      "bid_price_open": 90124,
      "bid_size_avg": 0.6,
      "bid_size_close": 0.8,
      "bid_size_high": 2,
      "bid_size_low": 0.1,
      "bid_size_open": 0.5,
      "date": "2026-03-06 12:00:00",
      "high_24h": 91200,
      "last_price_close": 90210,
      "last_price_high": 90340.75,
      "last_price_low": 89980.25,
      "last_price_open": 90125.5,
      "low_24h": 88500,
      "price_change_24h_pct": 2.35,
      "quote_currency": "USDT",
      "quote_updates_count": 800,
      "quote_volume_24h": 1373250000,
      "spread_stability_ratio": 0.95,
      "ticker_updates_count": 1200,
      "total_liquidity_avg": 1.1,
      "total_liquidity_close": 1.5,
      "total_liquidity_high": 3.5,
      "total_liquidity_low": 0.15,
      "total_liquidity_open": 0.9,
      "volume_24h": 15230.5
    }
  ],
  "meta": {
    "next_cursor": "eyJtaW51dGUiOiIyMDI2LTAzLTA2IDEyOjAxOjAwIn0="
  }
}
GET/api/v1/spot/metadata
$0.10 default
Description

Spot market data — pay per request

Documentation

Spot Metadata

Returns metadata for a specific spot instrument including data availability, total record count, and pagination information.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "exchange": {
      "description": "Exchange name (e.g., binance, coinbase, bybit, okx)",
      "example": "binance",
      "required": true,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name": {
      "description": "Full spot instrument identifier (e.g., BTCUSDT, BTC-USD)",
      "example": "BTCUSDT",
      "required": true,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [
    "exchange",
    "instrument_name"
  ],
  "type": "object"
}
Request schema
{
  "properties": {
    "exchange": {
      "description": "Exchange name (e.g., binance, coinbase, bybit, okx)",
      "example": "binance",
      "type": "string"
    },
    "instrument_name": {
      "description": "Full spot instrument identifier (e.g., BTCUSDT, BTC-USD)",
      "example": "BTCUSDT",
      "type": "string"
    }
  },
  "required": [
    "exchange",
    "instrument_name"
  ],
  "type": "object"
}
Response schema
{
  "properties": {
    "end_date": {
      "description": "End date of available data (ISO 8601 format)",
      "example": "2025-11-21T23:59:00.000Z",
      "type": "string"
    },
    "exchange": {
      "description": "Exchange name",
      "example": "deribit",
      "type": "string"
    },
    "instrument_name": {
      "description": "Instrument name",
      "example": "BTC-PERPETUAL",
      "type": "string"
    },
    "start_date": {
      "description": "Start date of available data (ISO 8601 format)",
      "example": "2020-01-01T00:00:00.000Z",
      "type": "string"
    },
    "total_count": {
      "description": "Total count of records available",
      "example": 1500000,
      "type": "number"
    },
    "total_pages": {
      "description": "Total number of pages based on the provided limit",
      "example": 15000,
      "type": "number"
    }
  },
  "required": [
    "exchange",
    "instrument_name",
    "start_date",
    "end_date",
    "total_count",
    "total_pages"
  ],
  "type": "object",
  "x-openapi-ref": "#/components/schemas/MetadataResponseEntity"
}
Example request
{
  "exchange": "binance",
  "instrument_name": "BTCUSDT"
}
Example response
{
  "end_date": "2025-11-21T23:59:00.000Z",
  "exchange": "deribit",
  "instrument_name": "BTC-PERPETUAL",
  "start_date": "2020-01-01T00:00:00.000Z",
  "total_count": 1500000,
  "total_pages": 15000
}
GET/api/v1/spot/ohlcvt
$0.10 default
Description

Spot market data — pay per request

Documentation

Spot OHLCVT Market Data

Retrieves Open, High, Low, Close, Volume, and Trade statistics for spot instruments.

**Key Features:**
- Historical trade-based OHLC candlestick data
- Buy/sell volume breakdown (base and quote currency)
- Trade count statistics
- VWAP (Volume Weighted Average Price)
- Support for multiple resolutions (1m, 5m, 1h, 1d)

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "currency": {
      "description": "Base currency (e.g., BTC, ETH, SOL)",
      "example": "BTC",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "description": "Exchange name (e.g., binance, coinbase, bybit, okx)",
      "example": "binance",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name": {
      "description": "Full spot instrument identifier (e.g., BTCUSDT, BTC-USD, BTC-USDT)",
      "example": "BTCUSDT",
      "required": true,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "quote_currency": {
      "description": "Quote currency (e.g., USDT, USDC, USD)",
      "example": "USDT",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for bucketing results",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [
    "instrument_name"
  ],
  "type": "object"
}
Request schema
{
  "properties": {
    "currency": {
      "description": "Base currency (e.g., BTC, ETH, SOL)",
      "example": "BTC",
      "type": "string"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "type": "string"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "exchange": {
      "description": "Exchange name (e.g., binance, coinbase, bybit, okx)",
      "example": "binance",
      "type": "string"
    },
    "instrument_name": {
      "description": "Full spot instrument identifier (e.g., BTCUSDT, BTC-USD, BTC-USDT)",
      "example": "BTCUSDT",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "quote_currency": {
      "description": "Quote currency (e.g., USDT, USDC, USD)",
      "example": "USDT",
      "type": "string"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for bucketing results",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "type": "string"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    }
  },
  "required": [
    "instrument_name"
  ],
  "type": "object"
}
Response schema
{
  "allOf": [
    {
      "properties": {
        "data": {
          "items": {
            "type": "array"
          },
          "type": "array"
        },
        "meta": {
          "properties": {
            "next_cursor": {
              "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,
              "type": "string"
            }
          },
          "required": [
            "next_cursor"
          ],
          "type": "object",
          "x-openapi-ref": "#/components/schemas/PaginationMetaEntity"
        }
      },
      "required": [
        "data",
        "meta"
      ],
      "type": "object",
      "x-openapi-ref": "#/components/schemas/PaginatedResponse"
    },
    {
      "properties": {
        "data": {
          "items": {
            "properties": {
              "buy_quote_volume": {
                "description": "Buy-side volume in quote currency",
                "example": 63500000,
                "type": "number"
              },
              "buy_trades_count": {
                "description": "Number of buy trades",
                "example": 150,
                "type": "number"
              },
              "buy_volume": {
                "description": "Buy-side volume in base currency",
                "example": 1500.5,
                "type": "number"
              },
              "close": {
                "description": "Closing trade price in the time bucket",
                "example": 42500,
                "type": "number"
              },
              "currency": {
                "description": "Base currency",
                "example": "BTC",
                "type": "string"
              },
              "data_source": {
                "description": "Data source identifier",
                "example": "rest",
                "type": "string"
              },
              "date": {
                "description": "Date in ISO 8601 format (UTC)",
                "example": "2024-12-10T00:00:00.000Z",
                "format": "date-time",
                "type": "string"
              },
              "exchange": {
                "description": "Exchange name",
                "example": "deribit",
                "type": "string"
              },
              "first_trade_id": {
                "description": "First trade ID in the time bucket",
                "example": "trade_100001",
                "type": "string"
              },
              "high": {
                "description": "Highest trade price in the time bucket",
                "example": 42890.75,
                "type": "number"
              },
              "instrument_name": {
                "description": "Instrument name",
                "example": "BTC-25DEC26",
                "type": "string"
              },
              "last_trade_id": {
                "description": "Last trade ID in the time bucket",
                "example": "trade_100270",
                "type": "string"
              },
              "low": {
                "description": "Lowest trade price in the time bucket",
                "example": 41920.25,
                "type": "number"
              },
              "open": {
                "description": "Opening trade price in the time bucket",
                "example": 42150.5,
                "type": "number"
              },
              "quote_currency": {
                "description": "Quote currency",
                "example": "USDT",
                "type": "string"
              },
              "quote_volume": {
                "description": "Total volume in quote currency (buy + sell)",
                "example": 114500000,
                "type": "number"
              },
              "sell_quote_volume": {
                "description": "Sell-side volume in quote currency",
                "example": 51000000,
                "type": "number"
              },
              "sell_trades_count": {
                "description": "Number of sell trades",
                "example": 120,
                "type": "number"
              },
              "sell_volume": {
                "description": "Sell-side volume in base currency",
                "example": 1200.3,
                "type": "number"
              },
              "trades_count": {
                "description": "Total number of trades (buy + sell)",
                "example": 270,
                "type": "number"
              },
              "volume": {
                "description": "Total volume in base currency (buy + sell)",
                "example": 2700.8,
                "type": "number"
              },
              "vwap": {
                "description": "Volume Weighted Average Price (VWAP)",
                "example": 42350.5,
                "type": "number"
              }
            },
            "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"
            ],
            "type": "object",
            "x-openapi-ref": "#/components/schemas/SpotOhlcvtEntity"
          },
          "type": "array"
        }
      }
    }
  ]
}
Example request
{
  "currency": "BTC",
  "cursor": "test",
  "end": "2026-07-21T10:00:00.000Z",
  "exchange": "binance",
  "instrument_name": "BTCUSDT",
  "limit": 100,
  "quote_currency": "USDT",
  "resolution": "1m",
  "sort_dir": "ASC",
  "start": "2026-07-14T10:00:00.000Z"
}
Example response
{
  "data": [
    {
      "buy_quote_volume": 2298825,
      "buy_trades_count": 175,
      "buy_volume": 25.5,
      "close": 90210,
      "data_source": "rest",
      "date": "2026-03-06 12:00:00",
      "first_trade_id": "3847291001",
      "high": 90340.75,
      "last_trade_id": "3847291312",
      "low": 89980.25,
      "open": 90125.5,
      "quote_currency": "USDT",
      "quote_volume": 4130280,
      "sell_quote_volume": 1831455,
      "sell_trades_count": 137,
      "sell_volume": 20.32,
      "trades_count": 312,
      "volume": 45.82,
      "vwap": 90150.3
    },
    {
      "buy_quote_volume": 1995303,
      "buy_trades_count": 140,
      "buy_volume": 22.1,
      "close": 90380.5,
      "data_source": "rest",
      "date": "2026-03-06 12:01:00",
      "first_trade_id": "3847291313",
      "high": 90415,
      "last_trade_id": "3847291560",
      "low": 90150,
      "open": 90210,
      "quote_currency": "USDT",
      "quote_volume": 3444382,
      "sell_quote_volume": 1449079,
      "sell_trades_count": 108,
      "sell_volume": 16.05,
      "trades_count": 248,
      "volume": 38.15,
      "vwap": 90285.2
    },
    {
      "buy_quote_volume": 1282413,
      "buy_trades_count": 92,
      "buy_volume": 14.2,
      "close": 90275,
      "data_source": "rest",
      "date": "2026-03-06 12:02:00",
      "first_trade_id": "3847291561",
      "high": 90425,
      "last_trade_id": "3847291755",
      "low": 90200,
      "open": 90380.5,
      "quote_currency": "USDT",
      "quote_volume": 2675507,
      "sell_quote_volume": 1393094,
      "sell_trades_count": 103,
      "sell_volume": 15.43,
      "trades_count": 195,
      "volume": 29.63,
      "vwap": 90310.8
    }
  ],
  "meta": {
    "next_cursor": "eyJtaW51dGUiOiIyMDI2LTAzLTA2IDEyOjAzOjAwIn0="
  }
}
GET/api/v1/spot/snapshot
$0.10 default
Description

Spot market data — pay per request

Documentation

Spot Snapshot

Returns a snapshot of all spot instruments for a given exchange at a single minute. If no date is provided, returns the latest available snapshot. Currency and quote currency are optional filters.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "currency": {
      "description": "Base currency filter (e.g., BTC, ETH, SOL)",
      "example": "BTC",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "date": {
      "description": "Snapshot date (ISO 8601 format). Defaults to latest available.",
      "example": "2025-01-15",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "description": "Exchange name (e.g., binance, coinbase, bybit, okx)",
      "example": "binance",
      "required": true,
      "type": "string",
      "x-parameter-location": "query"
    },
    "quote_currency": {
      "description": "Quote currency filter (e.g., USDT, USDC, USD)",
      "example": "USDT",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "resolution": {
      "default": "1d",
      "description": "Time resolution for the snapshot data",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [
    "exchange"
  ],
  "type": "object"
}
Request schema
{
  "properties": {
    "currency": {
      "description": "Base currency filter (e.g., BTC, ETH, SOL)",
      "example": "BTC",
      "type": "string"
    },
    "date": {
      "description": "Snapshot date (ISO 8601 format). Defaults to latest available.",
      "example": "2025-01-15",
      "type": "string"
    },
    "exchange": {
      "description": "Exchange name (e.g., binance, coinbase, bybit, okx)",
      "example": "binance",
      "type": "string"
    },
    "quote_currency": {
      "description": "Quote currency filter (e.g., USDT, USDC, USD)",
      "example": "USDT",
      "type": "string"
    },
    "resolution": {
      "default": "1d",
      "description": "Time resolution for the snapshot data",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "type": "string"
    }
  },
  "required": [
    "exchange"
  ],
  "type": "object"
}
Example request
{
  "currency": "BTC",
  "date": "2025-01-15",
  "exchange": "binance",
  "quote_currency": "USDT",
  "resolution": "1d"
}
Example response
{
  "data": [
    {
      "ask_price": 90211,
      "ask_size": 0.7,
      "bid_ask_spread": 2,
      "bid_price": 90209,
      "bid_size": 0.8,
      "currency": "BTC",
      "date": "2026-03-06 12:00:00",
      "exchange": "binance",
      "high_24h": 91200,
      "instrument_name": "BTCUSDT",
      "last_price": 90210,
      "low_24h": 88500,
      "price_change_24h_pct": 2.35,
      "quote_currency": "USDT",
      "quote_volume_24h": 1373250000,
      "volume_24h": 15230.5
    },
    {
      "ask_price": 3450.5,
      "ask_size": 4.8,
      "bid_ask_spread": 0.5,
      "bid_price": 3450,
      "bid_size": 5.2,
      "currency": "ETH",
      "date": "2026-03-06 12:00:00",
      "exchange": "binance",
      "high_24h": 3520,
      "instrument_name": "ETHUSDT",
      "last_price": 3450.25,
      "low_24h": 3380,
      "price_change_24h_pct": 1.82,
      "quote_currency": "USDT",
      "quote_volume_24h": 638252000,
      "volume_24h": 185000.5
    }
  ],
  "meta": {
    "minute": "2026-03-06 12:00:00"
  }
}
GET/api/v1/spot/ticker
$0.10 default
Description

Spot market data — pay per request

Documentation

Spot Ticker History

Returns historical ticker data for spot instruments including bid/ask prices, spreads, sizes, and 24h rolling statistics.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "currency": {
      "description": "Base currency (e.g., BTC, ETH, SOL)",
      "example": "BTC",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "description": "Exchange name (e.g., binance, coinbase, bybit, okx)",
      "example": "binance",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name": {
      "description": "Full spot instrument identifier (e.g., BTCUSDT, BTC-USD, BTC-USDT)",
      "example": "BTCUSDT",
      "required": true,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "quote_currency": {
      "description": "Quote currency (e.g., USDT, USDC, USD)",
      "example": "USDT",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for bucketing results",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [
    "instrument_name"
  ],
  "type": "object"
}
Request schema
{
  "properties": {
    "currency": {
      "description": "Base currency (e.g., BTC, ETH, SOL)",
      "example": "BTC",
      "type": "string"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "type": "string"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "exchange": {
      "description": "Exchange name (e.g., binance, coinbase, bybit, okx)",
      "example": "binance",
      "type": "string"
    },
    "instrument_name": {
      "description": "Full spot instrument identifier (e.g., BTCUSDT, BTC-USD, BTC-USDT)",
      "example": "BTCUSDT",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "quote_currency": {
      "description": "Quote currency (e.g., USDT, USDC, USD)",
      "example": "USDT",
      "type": "string"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for bucketing results",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "type": "string"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    }
  },
  "required": [
    "instrument_name"
  ],
  "type": "object"
}
Response schema
{
  "allOf": [
    {
      "properties": {
        "data": {
          "items": {
            "type": "array"
          },
          "type": "array"
        },
        "meta": {
          "properties": {
            "next_cursor": {
              "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,
              "type": "string"
            }
          },
          "required": [
            "next_cursor"
          ],
          "type": "object",
          "x-openapi-ref": "#/components/schemas/PaginationMetaEntity"
        }
      },
      "required": [
        "data",
        "meta"
      ],
      "type": "object",
      "x-openapi-ref": "#/components/schemas/PaginatedResponse"
    },
    {
      "properties": {
        "data": {
          "type": "array"
        }
      }
    }
  ]
}
Example request
{
  "currency": "BTC",
  "cursor": "test",
  "end": "2026-07-21T10:00:00.000Z",
  "exchange": "binance",
  "instrument_name": "BTCUSDT",
  "limit": 100,
  "quote_currency": "USDT",
  "resolution": "1m",
  "sort_dir": "ASC",
  "start": "2026-07-14T10:00:00.000Z"
}
Example response
{
  "data": [
    {
      "ask_price_close": 90211,
      "ask_price_high": 90341,
      "ask_price_low": 89981,
      "ask_price_open": 90126,
      "ask_size_avg": 0.5,
      "ask_size_close": 0.7,
      "ask_size_high": 1.5,
      "ask_size_low": 0.05,
      "ask_size_open": 0.4,
      "bid_ask_spread_avg": 1.8,
      "bid_ask_spread_close": 2,
      "bid_ask_spread_high": 5,
      "bid_ask_spread_low": 0.5,
      "bid_ask_spread_open": 2,
      "bid_price_close": 90209,
      "bid_price_high": 90339,
      "bid_price_low": 89979,
      "bid_price_open": 90124,
      "bid_size_avg": 0.6,
      "bid_size_close": 0.8,
      "bid_size_high": 2,
      "bid_size_low": 0.1,
      "bid_size_open": 0.5,
      "date": "2026-03-06 12:00:00",
      "high_24h": 91200,
      "last_price_close": 90210,
      "last_price_high": 90340.75,
      "last_price_low": 89980.25,
      "last_price_open": 90125.5,
      "low_24h": 88500,
      "price_change_24h_pct": 2.35,
      "quote_currency": "USDT",
      "quote_updates_count": 800,
      "quote_volume_24h": 1373250000,
      "spread_stability_ratio": 0.95,
      "ticker_updates_count": 1200,
      "total_liquidity_avg": 1.1,
      "total_liquidity_close": 1.5,
      "total_liquidity_high": 3.5,
      "total_liquidity_low": 0.15,
      "total_liquidity_open": 0.9,
      "volume_24h": 15230.5
    },
    {
      "ask_price_close": 90381,
      "ask_price_high": 90416,
      "ask_price_low": 90151,
      "ask_price_open": 90211,
      "ask_size_avg": 0.55,
      "ask_size_close": 0.5,
      "ask_size_high": 1.2,
      "ask_size_low": 0.1,
      "ask_size_open": 0.7,
      "bid_ask_spread_avg": 1.9,
      "bid_ask_spread_close": 2,
      "bid_ask_spread_high": 4,
      "bid_ask_spread_low": 1,
      "bid_ask_spread_open": 2,
      "bid_price_close": 90379,
      "bid_price_high": 90414,
      "bid_price_low": 90149,
      "bid_price_open": 90209,
      "bid_size_avg": 0.7,
      "bid_size_close": 0.6,
      "bid_size_high": 1.8,
      "bid_size_low": 0.2,
      "bid_size_open": 0.8,
      "date": "2026-03-06 12:01:00",
      "high_24h": 91200,
      "last_price_close": 90380.5,
      "last_price_high": 90415,
      "last_price_low": 90150,
      "last_price_open": 90210,
      "low_24h": 88500,
      "price_change_24h_pct": 2.38,
      "quote_currency": "USDT",
      "quote_updates_count": 780,
      "quote_volume_24h": 1374580000,
      "spread_stability_ratio": 0.94,
      "ticker_updates_count": 1150,
      "total_liquidity_avg": 1.25,
      "total_liquidity_close": 1.1,
      "total_liquidity_high": 3,
      "total_liquidity_low": 0.3,
      "total_liquidity_open": 1.5,
      "volume_24h": 15245.2
    }
  ],
  "meta": {
    "next_cursor": "eyJtaW51dGUiOiIyMDI2LTAzLTA2IDEyOjAyOjAwIn0="
  }
}
GET/api/v1/spot/trades
$0.10 default
Description

Spot market data — pay per request

Documentation

Spot Trade History

Returns spot trades with full trade details. Supports two modes: (1) instrument mode — provide instrument_name for a single spot pair, (2) currency mode — provide currency (e.g. BTC) for ALL spot trades across all pairs. Additional filters: direction, min_amount, min_quote_amount, sort, sort_dir. Use top_n for quick top-trades scanning.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "currency": {
      "description": "Base currency (e.g. BTC, ETH). Returns trades across ALL spot pairs for this currency. Either currency or instrument_name is recommended.",
      "example": "BTC",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "direction": {
      "description": "Filter by trade direction (aggressor side)",
      "enum": [
        "buy",
        "sell"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "description": "Exchange name (e.g., binance, coinbase)",
      "example": "binance",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name": {
      "description": "Full spot instrument identifier (e.g., BTCUSDT). Either instrument_name or currency is recommended.",
      "example": "BTCUSDT",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "min_amount": {
      "description": "Minimum trade amount (in base currency). Filters out dust trades.",
      "example": 0.01,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "min_quote_amount": {
      "description": "Minimum trade value in quote currency. Filters out small trades.",
      "example": 100,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "quote_currency": {
      "description": "Quote currency (e.g., USDT, USDC, USD)",
      "example": "USDT",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "sort": {
      "default": "timestamp",
      "description": "Sort field. Default: timestamp.",
      "enum": [
        "timestamp",
        "amount",
        "price",
        "quote_amount"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "sort_dir": {
      "default": "ASC",
      "description": "Sort direction. Defaults to ASC for instrument mode, DESC for currency mode.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "top_n": {
      "description": "Return top N trades by the sort field (DESC). Overrides limit and sort_dir. No pagination cursor returned.",
      "example": 20,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    }
  },
  "required": [],
  "type": "object"
}
Request schema
{
  "properties": {
    "currency": {
      "description": "Base currency (e.g. BTC, ETH). Returns trades across ALL spot pairs for this currency. Either currency or instrument_name is recommended.",
      "example": "BTC",
      "type": "string"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "type": "string"
    },
    "direction": {
      "description": "Filter by trade direction (aggressor side)",
      "enum": [
        "buy",
        "sell"
      ],
      "type": "string"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "exchange": {
      "description": "Exchange name (e.g., binance, coinbase)",
      "example": "binance",
      "type": "string"
    },
    "instrument_name": {
      "description": "Full spot instrument identifier (e.g., BTCUSDT). Either instrument_name or currency is recommended.",
      "example": "BTCUSDT",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "min_amount": {
      "description": "Minimum trade amount (in base currency). Filters out dust trades.",
      "example": 0.01,
      "type": "number"
    },
    "min_quote_amount": {
      "description": "Minimum trade value in quote currency. Filters out small trades.",
      "example": 100,
      "type": "number"
    },
    "quote_currency": {
      "description": "Quote currency (e.g., USDT, USDC, USD)",
      "example": "USDT",
      "type": "string"
    },
    "sort": {
      "default": "timestamp",
      "description": "Sort field. Default: timestamp.",
      "enum": [
        "timestamp",
        "amount",
        "price",
        "quote_amount"
      ],
      "type": "string"
    },
    "sort_dir": {
      "default": "ASC",
      "description": "Sort direction. Defaults to ASC for instrument mode, DESC for currency mode.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "top_n": {
      "description": "Return top N trades by the sort field (DESC). Overrides limit and sort_dir. No pagination cursor returned.",
      "example": 20,
      "type": "number"
    }
  },
  "type": "object"
}
Response schema
{
  "allOf": [
    {
      "properties": {
        "data": {
          "items": {
            "type": "array"
          },
          "type": "array"
        },
        "meta": {
          "properties": {
            "next_cursor": {
              "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,
              "type": "string"
            }
          },
          "required": [
            "next_cursor"
          ],
          "type": "object",
          "x-openapi-ref": "#/components/schemas/PaginationMetaEntity"
        }
      },
      "required": [
        "data",
        "meta"
      ],
      "type": "object",
      "x-openapi-ref": "#/components/schemas/PaginatedResponse"
    },
    {
      "properties": {
        "data": {
          "type": "array"
        }
      }
    }
  ]
}
Example request
{
  "currency": "BTC",
  "cursor": "test",
  "direction": "buy",
  "end": "2026-07-21T10:00:00.000Z",
  "exchange": "binance",
  "instrument_name": "BTCUSDT",
  "limit": 100,
  "min_amount": 0.01,
  "min_quote_amount": 100,
  "quote_currency": "USDT",
  "sort": "timestamp",
  "sort_dir": "ASC",
  "start": "2026-07-14T10:00:00.000Z",
  "top_n": 20
}
Example response
{
  "data": [
    {
      "amount": 0.125,
      "ask_price": 90251,
      "ask_size": 0.4,
      "bid_price": 90249,
      "bid_size": 0.5,
      "currency": "BTC",
      "date": "2026-03-06T12:30:00.123Z",
      "direction": "buy",
      "exchange": "binance",
      "instrument_name": "BTCUSDT",
      "price": 90250.5,
      "quote_amount": 11281.31,
      "quote_currency": "USDT",
      "timestamp": 1772885400123,
      "trade_id": "3847291001"
    },
    {
      "amount": 0.05,
      "ask_price": 90249,
      "ask_size": 0.6,
      "bid_price": 90247,
      "bid_size": 0.3,
      "currency": "BTC",
      "date": "2026-03-06T12:30:01.456Z",
      "direction": "sell",
      "exchange": "binance",
      "instrument_name": "BTCUSDT",
      "price": 90248,
      "quote_amount": 4512.4,
      "quote_currency": "USDT",
      "timestamp": 1772885401456,
      "trade_id": "3847291002"
    },
    {
      "amount": 1.5,
      "ask_price": 90256,
      "ask_size": 0.3,
      "bid_price": 90254,
      "bid_size": 0.8,
      "currency": "BTC",
      "date": "2026-03-06T12:30:02.789Z",
      "direction": "buy",
      "exchange": "binance",
      "instrument_name": "BTCUSDT",
      "price": 90255,
      "quote_amount": 135382.5,
      "quote_currency": "USDT",
      "timestamp": 1772885402789,
      "trade_id": "3847291003"
    }
  ],
  "meta": {
    "next_cursor": "eyJ0aW1lc3RhbXAiOiIxNzcyODg1NDAyNzg5IiwidHJhZGVfaWQiOiIzODQ3MjkxMDAzIn0="
  }
}
GET/api/v1/spot/volume
$0.10 default
Description

Spot market data — pay per request

Documentation

Spot Volume Stats

Returns volume metrics for spot instruments including 24h rolling volume, buy/sell breakdown in both base and quote currency, and trade counts.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "currency": {
      "description": "Base currency (e.g., BTC, ETH, SOL)",
      "example": "BTC",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "description": "Exchange name (e.g., binance, coinbase, bybit, okx)",
      "example": "binance",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument_name": {
      "description": "Full spot instrument identifier (e.g., BTCUSDT, BTC-USD, BTC-USDT)",
      "example": "BTCUSDT",
      "required": true,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "quote_currency": {
      "description": "Quote currency (e.g., USDT, USDC, USD)",
      "example": "USDT",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for bucketing results",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [
    "instrument_name"
  ],
  "type": "object"
}
Request schema
{
  "properties": {
    "currency": {
      "description": "Base currency (e.g., BTC, ETH, SOL)",
      "example": "BTC",
      "type": "string"
    },
    "cursor": {
      "description": "Pagination cursor for fetching the next page of results. Use the value returned in meta.next_cursor from the previous response.",
      "type": "string"
    },
    "end": {
      "description": "End date in ISO 8601 format (UTC)",
      "example": "2026-07-21T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    },
    "exchange": {
      "description": "Exchange name (e.g., binance, coinbase, bybit, okx)",
      "example": "binance",
      "type": "string"
    },
    "instrument_name": {
      "description": "Full spot instrument identifier (e.g., BTCUSDT, BTC-USD, BTC-USDT)",
      "example": "BTCUSDT",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of records to return (1-1000)",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "quote_currency": {
      "description": "Quote currency (e.g., USDT, USDC, USD)",
      "example": "USDT",
      "type": "string"
    },
    "resolution": {
      "default": "1m",
      "description": "Time resolution for bucketing results",
      "enum": [
        "1m",
        "5m",
        "15m",
        "1h",
        "4h",
        "1d"
      ],
      "example": "1m",
      "type": "string"
    },
    "sort_dir": {
      "default": "ASC",
      "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.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "start": {
      "description": "Start date in ISO 8601 format (UTC). Defaults to 24 hours ago when omitted.",
      "example": "2026-07-14T10:00:00.000Z",
      "format": "date-time",
      "type": "string"
    }
  },
  "required": [
    "instrument_name"
  ],
  "type": "object"
}
Response schema
{
  "allOf": [
    {
      "properties": {
        "data": {
          "items": {
            "type": "array"
          },
          "type": "array"
        },
        "meta": {
          "properties": {
            "next_cursor": {
              "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,
              "type": "string"
            }
          },
          "required": [
            "next_cursor"
          ],
          "type": "object",
          "x-openapi-ref": "#/components/schemas/PaginationMetaEntity"
        }
      },
      "required": [
        "data",
        "meta"
      ],
      "type": "object",
      "x-openapi-ref": "#/components/schemas/PaginatedResponse"
    },
    {
      "properties": {
        "data": {
          "type": "array"
        }
      }
    }
  ]
}
Example request
{
  "currency": "BTC",
  "cursor": "test",
  "end": "2026-07-21T10:00:00.000Z",
  "exchange": "binance",
  "instrument_name": "BTCUSDT",
  "limit": 100,
  "quote_currency": "USDT",
  "resolution": "1m",
  "sort_dir": "ASC",
  "start": "2026-07-14T10:00:00.000Z"
}
Example response
{
  "data": [
    {
      "buy_quote_volume": 2298825,
      "buy_trades_count": 175,
      "buy_volume": 25.5,
      "date": "2026-03-06 12:00:00",
      "quote_currency": "USDT",
      "quote_volume": 4130280,
      "quote_volume_24h": 1373250000,
      "sell_quote_volume": 1831455,
      "sell_trades_count": 137,
      "sell_volume": 20.32,
      "trades_count": 312,
      "volume": 45.82,
      "volume_24h": 15230.5
    },
    {
      "buy_quote_volume": 1995303,
      "buy_trades_count": 140,
      "buy_volume": 22.1,
      "date": "2026-03-06 12:01:00",
      "quote_currency": "USDT",
      "quote_volume": 3444382,
      "quote_volume_24h": 1374580000,
      "sell_quote_volume": 1449079,
      "sell_trades_count": 108,
      "sell_volume": 16.05,
      "trades_count": 248,
      "volume": 38.15,
      "volume_24h": 15245.2
    },
    {
      "buy_quote_volume": 1282413,
      "buy_trades_count": 92,
      "buy_volume": 14.2,
      "date": "2026-03-06 12:02:00",
      "quote_currency": "USDT",
      "quote_volume": 2675507,
      "quote_volume_24h": 1375920000,
      "sell_quote_volume": 1393094,
      "sell_trades_count": 103,
      "sell_volume": 15.43,
      "trades_count": 195,
      "volume": 29.63,
      "volume_24h": 15260.8
    }
  ],
  "meta": {
    "next_cursor": "eyJtaW51dGUiOiIyMDI2LTAzLTA2IDEyOjAzOjAwIn0="
  }
}
GET/api/v1/vol-surface/catalog
$0.10 default
Description

Proprietary volatility surface data - snapshots, slices, term structure, and strike diagnostics. Pay per request

Documentation

Vol Surface Catalog

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.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "currency": {
      "description": "Optional base currency filter.",
      "example": "BTC",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "description": "Optional exchange filter.",
      "example": "deribit",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of surface tuples to return.",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "margin": {
      "description": "Optional margin filter.",
      "enum": [
        "inverse",
        "linear"
      ],
      "example": "inverse",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "model": {
      "description": "Optional model filter.",
      "example": "svi",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [],
  "type": "object"
}
Request schema
{
  "properties": {
    "currency": {
      "description": "Optional base currency filter.",
      "example": "BTC",
      "type": "string"
    },
    "exchange": {
      "description": "Optional exchange filter.",
      "example": "deribit",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of surface tuples to return.",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "margin": {
      "description": "Optional margin filter.",
      "enum": [
        "inverse",
        "linear"
      ],
      "example": "inverse",
      "type": "string"
    },
    "model": {
      "description": "Optional model filter.",
      "example": "svi",
      "type": "string"
    }
  },
  "type": "object"
}
Example request
{
  "currency": "BTC",
  "exchange": "deribit",
  "limit": 100,
  "margin": "inverse",
  "model": "svi"
}
Example response
{
  "data": [
    {
      "currency": "BTC",
      "date": "2026-06-08T12:00:00.000Z",
      "exchange": "deribit",
      "index_price": 104000.25,
      "margin": "inverse",
      "model": "svi",
      "n_forward_knots": 7,
      "n_slices": 10
    }
  ],
  "meta": {
    "next_cursor": null
  }
}
POST/api/v1/vol-surface/risk/decompose
$0.10 default
Description

Live portfolio risk, scenario, and ladder requests backed by the proprietary vol-surface engine. Pay per request

Documentation

Vol Surface Risk Decompose

Runs live portfolio risk decomposition through the proprietary vol-surface engine. Requires the same API-key authentication as GET data endpoints.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Request schema
{
  "properties": {
    "currency": {
      "description": "Base currency used for risk request routing.",
      "example": "BTC",
      "type": "string"
    },
    "exchange": {
      "description": "Exchange used for risk request routing.",
      "example": "deribit",
      "type": "string"
    },
    "positions": {
      "description": "Portfolio positions to price or risk-analyze.",
      "items": {
        "properties": {
          "currency": {
            "description": "Base currency. Defaults from the request if omitted.",
            "example": "BTC",
            "type": "string"
          },
          "entry_price": {
            "description": "Entry price for PnL calculations.",
            "example": 0.075,
            "type": "number"
          },
          "entry_spot": {
            "description": "Entry spot used for inverse PnL conversion.",
            "example": 96000,
            "type": "number"
          },
          "exchange": {
            "description": "Exchange. Defaults from the request if omitted.",
            "example": "deribit",
            "type": "string"
          },
          "expiry": {
            "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",
            "type": "string"
          },
          "funding_pnl_coin": {
            "description": "Caller-supplied realized funding PnL in coin.",
            "example": -0.00012,
            "type": "number"
          },
          "funding_pnl_usd": {
            "description": "Caller-supplied realized funding PnL in USD.",
            "example": -12.5,
            "type": "number"
          },
          "instrument": {
            "description": "Instrument identifier.",
            "example": "BTC-26JUN26-100000-C",
            "type": "string"
          },
          "kind": {
            "default": "option",
            "description": "Position kind. Empty defaults to option in the engine.",
            "enum": [
              "option",
              "perpetual",
              "future",
              "spot"
            ],
            "type": "string"
          },
          "margin": {
            "description": "Margin book. Spot must be linear; options/perps/futures default to inverse when omitted by the engine.",
            "enum": [
              "inverse",
              "linear"
            ],
            "example": "inverse",
            "type": "string"
          },
          "mark_price": {
            "description": "Current mark price for delta-one positions.",
            "example": 104000,
            "type": "number"
          },
          "option_type": {
            "description": "Option type. Required for option positions.",
            "enum": [
              "C",
              "P"
            ],
            "example": "C",
            "type": "string"
          },
          "quantity": {
            "description": "Position quantity. Positive is long, negative is short.",
            "example": 2.5,
            "type": "number"
          },
          "strike": {
            "description": "Option strike. Required for option positions.",
            "example": 100000,
            "type": "number"
          }
        },
        "required": [
          "instrument",
          "quantity"
        ],
        "type": "object",
        "x-openapi-ref": "#/components/schemas/VolSurfaceRiskPositionDto"
      },
      "type": "array"
    },
    "timeout_ms": {
      "default": 5000,
      "description": "Risk request timeout in milliseconds.",
      "maximum": 30000,
      "minimum": 100,
      "type": "number"
    }
  },
  "required": [
    "exchange",
    "currency",
    "positions"
  ],
  "type": "object",
  "x-openapi-ref": "#/components/schemas/VolSurfaceRiskDecomposeRequestDto"
}
Example request
{
  "currency": "BTC",
  "exchange": "deribit",
  "positions": [
    {
      "currency": "BTC",
      "exchange": "deribit",
      "expiry": "2026-07-31T08:00:00Z",
      "instrument": "BTC-31JUL26-62000-C",
      "kind": "option",
      "margin": "inverse",
      "option_type": "C",
      "quantity": 1,
      "strike": 62000
    }
  ]
}
Example response
{
  "buckets": [
    {
      "curvature_vega": 32.40599091625117,
      "level_vega": 10.904900106306162,
      "net_delta": 0.5298747339971175,
      "net_gamma": 0.000038802800723917366,
      "net_theta": -39.54853334689837,
      "positions": 1,
      "skew_vega": 49.27619330071987,
      "tenor_days": 60,
      "tenor_label": "60d",
      "total_vega": 92.5870843232772
    }
  ],
  "currency": "BTC",
  "curvature_vega": 32.40599091625117,
  "exchange": "deribit",
  "gross_value_usd": 4048.057481709547,
  "level_vega": 10.904900106306162,
  "margin": "inverse",
  "mark_value_coin": 0.06562415469101558,
  "mark_value_usd": 4048.057481709547,
  "market_value_usd": 4055.7195304898014,
  "model": "svi",
  "model_edge_value_usd": -7.662048780253826,
  "position_count": 1,
  "positions": [
    {
      "ask_iv": 44.46925039214093,
      "atm_iv": 44.101471505515754,
      "bid_iv": 43.80047281798966,
      "bucket_days": 60,
      "bucket_label": "60d",
      "currency": "BTC",
      "curvature_vega": 32.40599091625117,
      "delta": 0.5298747339971175,
      "deviation_vol": 0.08275557820242341,
      "exchange": "deribit",
      "expiry": "2026-07-31T08:00:00Z",
      "forward": 61919.63800499999,
      "gamma": 0.000038802800723917366,
      "instrument": "BTC-31JUL26-62000-C",
      "kind": "option",
      "level_vega": 10.904900106306162,
      "margin": "inverse",
      "market_iv": 44.134861605065296,
      "market_price_usd": 4055.7195304898014,
      "model_edge_usd": -7.662048780253826,
      "model_iv": 44.05210602686287,
      "model_price_usd": 4048.057481709547,
      "option_type": "C",
      "pa_delta": 0.4642505793061019,
      "quantity": 1,
      "rho": 34.91393048941768,
      "skew_vega": 49.27619330071987,
      "slice_quality_tier": "trusted",
      "slice_source": "fitted",
      "smile_delta": 0.5866479117764257,
      "spot": 61685.48,
      "strike": 62000,
      "theta": -39.54853334689837,
      "vega": 92.5870843232772
    }
  ],
  "premium_pnl_usd": 4048.057481709547,
  "skew_vega": 49.27619330071987,
  "total_charm": -0.0003495703061108222,
  "total_delta": 0.5298747339971175,
  "total_funding_pnl_usd": 0,
  "total_gamma": 0.000038802800723917366,
  "total_mark_pnl_usd": 4048.057481709547,
  "total_pa_delta": 0.4642505793061019,
  "total_pa_gamma": 0.00003127670901957946,
  "total_pa_theta": -0.0006411319705528492,
  "total_pa_vanna": -0.0006825751077630318,
  "total_pa_vega": 0.0015009542654653445,
  "total_pnl_usd": 4048.057481709547,
  "total_rho": 34.91393048941768,
  "total_smile_gamma": 0.000042352439219740666,
  "total_smile_vanna": 0.0008096251247532112,
  "total_theta": -39.54853334689837,
  "total_vanna": 0.0008183791577023126,
  "total_vega": 92.5870843232772,
  "total_volga": -0.014276290645167958,
  "unrealized_pnl_usd": 4048.057481709547
}
POST/api/v1/vol-surface/risk/ladder
$0.10 default
Description

Live portfolio risk, scenario, and ladder requests backed by the proprietary vol-surface engine. Pay per request

Documentation

Vol Surface Risk Ladder

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.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Request schema
{
  "properties": {
    "currency": {
      "description": "Base currency used for risk request routing.",
      "example": "BTC",
      "type": "string"
    },
    "curvature_shift": {
      "default": 0,
      "description": "Fixed curvature shock applied to every cell.",
      "example": 0,
      "type": "number"
    },
    "exchange": {
      "description": "Exchange used for risk request routing.",
      "example": "deribit",
      "type": "string"
    },
    "positions": {
      "description": "Portfolio positions to price or risk-analyze.",
      "items": {
        "properties": {
          "currency": {
            "description": "Base currency. Defaults from the request if omitted.",
            "example": "BTC",
            "type": "string"
          },
          "entry_price": {
            "description": "Entry price for PnL calculations.",
            "example": 0.075,
            "type": "number"
          },
          "entry_spot": {
            "description": "Entry spot used for inverse PnL conversion.",
            "example": 96000,
            "type": "number"
          },
          "exchange": {
            "description": "Exchange. Defaults from the request if omitted.",
            "example": "deribit",
            "type": "string"
          },
          "expiry": {
            "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",
            "type": "string"
          },
          "funding_pnl_coin": {
            "description": "Caller-supplied realized funding PnL in coin.",
            "example": -0.00012,
            "type": "number"
          },
          "funding_pnl_usd": {
            "description": "Caller-supplied realized funding PnL in USD.",
            "example": -12.5,
            "type": "number"
          },
          "instrument": {
            "description": "Instrument identifier.",
            "example": "BTC-26JUN26-100000-C",
            "type": "string"
          },
          "kind": {
            "default": "option",
            "description": "Position kind. Empty defaults to option in the engine.",
            "enum": [
              "option",
              "perpetual",
              "future",
              "spot"
            ],
            "type": "string"
          },
          "margin": {
            "description": "Margin book. Spot must be linear; options/perps/futures default to inverse when omitted by the engine.",
            "enum": [
              "inverse",
              "linear"
            ],
            "example": "inverse",
            "type": "string"
          },
          "mark_price": {
            "description": "Current mark price for delta-one positions.",
            "example": 104000,
            "type": "number"
          },
          "option_type": {
            "description": "Option type. Required for option positions.",
            "enum": [
              "C",
              "P"
            ],
            "example": "C",
            "type": "string"
          },
          "quantity": {
            "description": "Position quantity. Positive is long, negative is short.",
            "example": 2.5,
            "type": "number"
          },
          "strike": {
            "description": "Option strike. Required for option positions.",
            "example": 100000,
            "type": "number"
          }
        },
        "required": [
          "instrument",
          "quantity"
        ],
        "type": "object",
        "x-openapi-ref": "#/components/schemas/VolSurfaceRiskPositionDto"
      },
      "type": "array"
    },
    "skew_shift": {
      "default": 0,
      "description": "Fixed skew shock applied to every cell.",
      "example": 0,
      "type": "number"
    },
    "spot_shifts_pct": {
      "description": "Spot-shift grid rows in percent.",
      "example": [
        -20,
        -10,
        -5,
        0,
        5,
        10,
        20
      ],
      "items": {
        "type": "number"
      },
      "type": "array"
    },
    "time_decay_days": {
      "default": 0,
      "description": "Fixed time decay applied to every cell, in days.",
      "example": 0,
      "type": "number"
    },
    "timeout_ms": {
      "default": 5000,
      "description": "Risk request timeout in milliseconds.",
      "maximum": 30000,
      "minimum": 100,
      "type": "number"
    },
    "vol_shifts": {
      "description": "Parallel vol-shift grid columns in vol points.",
      "example": [
        -10,
        -5,
        0,
        5,
        10
      ],
      "items": {
        "type": "number"
      },
      "type": "array"
    }
  },
  "required": [
    "exchange",
    "currency",
    "positions",
    "spot_shifts_pct",
    "vol_shifts"
  ],
  "type": "object",
  "x-openapi-ref": "#/components/schemas/VolSurfaceRiskLadderRequestDto"
}
Example request
{
  "currency": "BTC",
  "curvature_shift": 0,
  "exchange": "deribit",
  "positions": [
    {
      "currency": "BTC",
      "exchange": "deribit",
      "expiry": "2026-07-31T08:00:00Z",
      "instrument": "BTC-31JUL26-62000-C",
      "kind": "option",
      "margin": "inverse",
      "option_type": "C",
      "quantity": 1,
      "strike": 62000
    }
  ],
  "skew_shift": 0,
  "spot_shifts_pct": [
    -10,
    0,
    10
  ],
  "time_decay_days": 0,
  "vol_shifts": [
    -5,
    0,
    5
  ]
}
Example response
{
  "cells": [
    {
      "pnl_coin": -0.04854960206196831,
      "pnl_pct": -0.7658316905033382,
      "pnl_usd": -3100.130704472309,
      "slice_quality_tier": "trusted",
      "spot_shift_pct": -10,
      "total_delta": 0.2325055392785804,
      "total_gamma": 0.00004098821038404953,
      "total_shocked_atm_iv": 39.10147150551575,
      "total_theta": -22.077273192877684,
      "total_vega": 63.987977535804085,
      "vol_shift": -5
    },
    {
      "pnl_coin": 0,
      "pnl_pct": 0,
      "pnl_usd": 0,
      "slice_quality_tier": "trusted",
      "spot_shift_pct": 0,
      "total_delta": 0.5298747339971175,
      "total_gamma": 0.000038802800723917366,
      "total_shocked_atm_iv": 44.101471505515754,
      "total_theta": -39.54853334689837,
      "total_vega": 92.5870843232772,
      "vol_shift": 0
    },
    {
      "pnl_coin": 0.06354531574940202,
      "pnl_pct": 1.1651542508007655,
      "pnl_usd": 4716.611382299721,
      "slice_quality_tier": "trusted",
      "spot_shift_pct": 10,
      "total_delta": 0.7165886093416941,
      "total_gamma": 0.00002503491483006675,
      "total_shocked_atm_iv": 49.10147150551577,
      "total_theta": -44.40447141428705,
      "total_vega": 86.68276911566157,
      "vol_shift": 5
    }
  ],
  "currency": "BTC",
  "curvature_shift": 0,
  "exchange": "deribit",
  "margin": "inverse",
  "pnl_coin_matrix": [
    [
      -0.04854960206196831,
      -0.04202102660912329,
      -0.03519096392799241
    ],
    [
      -0.007517045562691053,
      0,
      0.007509312236833557
    ],
    [
      0.05213156968453943,
      0.057714053544942245,
      0.06354531574940202
    ]
  ],
  "pnl_pct_matrix": [
    [
      -0.7658316905033382,
      -0.6762957881328511,
      -0.5826251505153371
    ],
    [
      -0.11454693166082322,
      0,
      0.11442908898698
    ],
    [
      0.9738356619295898,
      1.0674099300532112,
      1.1651542508007655
    ]
  ],
  "pnl_usd_matrix": [
    [
      -3100.130704472309,
      -2737.6842249998426,
      -2358.500099575762
    ],
    [
      -463.6925637164677,
      0,
      463.2155297989521
    ],
    [
      3942.1427372296457,
      4320.936753402966,
      4716.611382299721
    ]
  ],
  "position_count": 1,
  "skew_shift": 0,
  "spot_shifts_pct": [
    -10,
    0,
    10
  ],
  "time_decay_days": 0,
  "vol_shifts": [
    -5,
    0,
    5
  ]
}
POST/api/v1/vol-surface/risk/scenario
$0.10 default
Description

Live portfolio risk, scenario, and ladder requests backed by the proprietary vol-surface engine. Pay per request

Documentation

Vol Surface Risk Scenario

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.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Request schema
{
  "properties": {
    "currency": {
      "description": "Base currency used for risk request routing.",
      "example": "BTC",
      "type": "string"
    },
    "exchange": {
      "description": "Exchange used for risk request routing.",
      "example": "deribit",
      "type": "string"
    },
    "positions": {
      "description": "Portfolio positions to price or risk-analyze.",
      "items": {
        "properties": {
          "currency": {
            "description": "Base currency. Defaults from the request if omitted.",
            "example": "BTC",
            "type": "string"
          },
          "entry_price": {
            "description": "Entry price for PnL calculations.",
            "example": 0.075,
            "type": "number"
          },
          "entry_spot": {
            "description": "Entry spot used for inverse PnL conversion.",
            "example": 96000,
            "type": "number"
          },
          "exchange": {
            "description": "Exchange. Defaults from the request if omitted.",
            "example": "deribit",
            "type": "string"
          },
          "expiry": {
            "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",
            "type": "string"
          },
          "funding_pnl_coin": {
            "description": "Caller-supplied realized funding PnL in coin.",
            "example": -0.00012,
            "type": "number"
          },
          "funding_pnl_usd": {
            "description": "Caller-supplied realized funding PnL in USD.",
            "example": -12.5,
            "type": "number"
          },
          "instrument": {
            "description": "Instrument identifier.",
            "example": "BTC-26JUN26-100000-C",
            "type": "string"
          },
          "kind": {
            "default": "option",
            "description": "Position kind. Empty defaults to option in the engine.",
            "enum": [
              "option",
              "perpetual",
              "future",
              "spot"
            ],
            "type": "string"
          },
          "margin": {
            "description": "Margin book. Spot must be linear; options/perps/futures default to inverse when omitted by the engine.",
            "enum": [
              "inverse",
              "linear"
            ],
            "example": "inverse",
            "type": "string"
          },
          "mark_price": {
            "description": "Current mark price for delta-one positions.",
            "example": 104000,
            "type": "number"
          },
          "option_type": {
            "description": "Option type. Required for option positions.",
            "enum": [
              "C",
              "P"
            ],
            "example": "C",
            "type": "string"
          },
          "quantity": {
            "description": "Position quantity. Positive is long, negative is short.",
            "example": 2.5,
            "type": "number"
          },
          "strike": {
            "description": "Option strike. Required for option positions.",
            "example": 100000,
            "type": "number"
          }
        },
        "required": [
          "instrument",
          "quantity"
        ],
        "type": "object",
        "x-openapi-ref": "#/components/schemas/VolSurfaceRiskPositionDto"
      },
      "type": "array"
    },
    "shock": {
      "allOf": [
        {
          "properties": {
            "curvature_shift": {
              "default": 0,
              "description": "Curvature shock.",
              "example": 0,
              "type": "number"
            },
            "level_shift_vol": {
              "default": 0,
              "description": "Parallel volatility shift in vol points.",
              "example": 15,
              "type": "number"
            },
            "name": {
              "description": "Scenario name.",
              "example": "Crash",
              "type": "string"
            },
            "skew_shift": {
              "default": 0,
              "description": "Skew shock.",
              "example": -0.15,
              "type": "number"
            },
            "spot_shift_pct": {
              "description": "Spot shift in percent.",
              "example": -20,
              "type": "number"
            },
            "time_decay_days": {
              "default": 0,
              "description": "Time decay shock in days.",
              "example": 1,
              "type": "number"
            }
          },
          "required": [
            "spot_shift_pct"
          ],
          "type": "object",
          "x-openapi-ref": "#/components/schemas/VolSurfaceScenarioShockDto"
        }
      ],
      "description": "Scenario shock definition."
    },
    "timeout_ms": {
      "default": 5000,
      "description": "Risk request timeout in milliseconds.",
      "maximum": 30000,
      "minimum": 100,
      "type": "number"
    }
  },
  "required": [
    "exchange",
    "currency",
    "positions",
    "shock"
  ],
  "type": "object",
  "x-openapi-ref": "#/components/schemas/VolSurfaceRiskScenarioRequestDto"
}
Example request
{
  "currency": "BTC",
  "exchange": "deribit",
  "positions": [
    {
      "currency": "BTC",
      "exchange": "deribit",
      "expiry": "2026-07-31T08:00:00Z",
      "instrument": "BTC-31JUL26-62000-C",
      "kind": "option",
      "margin": "inverse",
      "option_type": "C",
      "quantity": 1,
      "strike": 62000
    }
  ],
  "shock": {
    "curvature_shift": 0,
    "level_shift_vol": 5,
    "name": "Spot down 10 vol up 5",
    "skew_shift": 0,
    "spot_shift_pct": -10,
    "time_decay_days": 0
  }
}
Example response
{
  "base_value_coin": 0.06562415469101558,
  "base_value_usd": 4048.057481709547,
  "currency": "BTC",
  "exchange": "deribit",
  "margin": "inverse",
  "pnl_coin": -0.03519096392799241,
  "pnl_pct": -0.5826251505153371,
  "pnl_usd": -2358.500099575762,
  "position_count": 1,
  "positions": [
    {
      "base_price_usd": 4048.057481709547,
      "contract_multiplier": 1,
      "delta": 0.29974008937747426,
      "effective_quantity": 1,
      "gamma": 0.000035800752388230626,
      "instrument": "BTC-31JUL26-62000-C",
      "pa_delta": 0.26930689861445106,
      "pnl_usd": -2358.500099575762,
      "quantity": 1,
      "quantity_status": "metadata",
      "rho": 18.824410639288853,
      "shocked_atm_iv": 49.10147150551577,
      "shocked_price_usd": 1689.5573821337855,
      "slice_quality_tier": "trusted",
      "smile_delta": 0.32063045230615406,
      "theta": -32.716834317584535,
      "vega": 72.79941739023384
    }
  ],
  "shock": {
    "curvature_shift": 0,
    "level_shift_vol": 5,
    "name": "Spot down 10 vol up 5",
    "skew_shift": 0,
    "spot_shift_pct": -10,
    "time_decay_days": 0
  },
  "shocked_value_coin": 0.030433190763023175,
  "shocked_value_usd": 1689.5573821337855,
  "total_charm": -0.00235686803502168,
  "total_delta": 0.29974008937747426,
  "total_driftless_theta": -32.716834317584535,
  "total_gamma": 0.000035800752388230626,
  "total_pa_delta": 0.26930689861445106,
  "total_pa_gamma": 0.00003094985575340846,
  "total_pa_theta": -0.0005893127220644061,
  "total_pa_vanna": 0.003933051582534716,
  "total_pa_vega": 0.0013113011610626077,
  "total_rho": 18.824410639288853,
  "total_shocked_atm_iv": 49.10147150551577,
  "total_smile_delta": 0.32063045230615406,
  "total_smile_gamma": 0.0000434216818884387,
  "total_smile_vanna": 0.005409889593989498,
  "total_theta": -32.716834317584535,
  "total_vanna": 0.005244352743597323,
  "total_vega": 72.79941739023384,
  "total_volga": 0.576868209820335
}
GET/api/v1/vol-surface/slices
$0.10 default
Description

Proprietary volatility surface data - snapshots, slices, term structure, and strike diagnostics. Pay per request

Documentation

Vol Surface Slices

Returns per-expiry proprietary surface fits from vol_surface_slices, 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.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "currency": {
      "description": "Base currency.",
      "example": "BTC",
      "required": true,
      "type": "string",
      "x-parameter-location": "query"
    },
    "cursor": {
      "description": "Pagination cursor from meta.next_cursor.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "date": {
      "description": "Snapshot cutoff time in ISO 8601 UTC. Snapshot mode returns the latest row at or before this timestamp.",
      "example": "2026-06-08T12:00:00Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "End time in ISO 8601 UTC. Providing start or end enables historical scan mode.",
      "example": "2026-06-08T12:00:00Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "description": "Exchange name. Examples: deribit, binance, okx, bybit, bullish, derive.",
      "example": "deribit",
      "required": true,
      "type": "string",
      "x-parameter-location": "query"
    },
    "expiry": {
      "description": "Expiry filter in ISO 8601 UTC. If omitted in snapshot mode, all expiries from the snapshot are returned.",
      "example": "2026-06-26T08:00:00Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of rows to return in historical scan mode.",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "margin": {
      "default": "inverse",
      "description": "Margin book. Inverse and linear surfaces are distinct and must not be combined.",
      "enum": [
        "inverse",
        "linear"
      ],
      "example": "inverse",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "model": {
      "default": "svi",
      "description": "Surface model. Defaults to 'svi'. Pass another model only when explicitly comparing model families.",
      "example": "svi",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "quality_tier": {
      "description": "Filter by engine trust label: trusted, indicative, or untrusted.",
      "enum": [
        "trusted",
        "indicative",
        "untrusted"
      ],
      "example": "trusted",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "slice_source": {
      "description": "Filter by slice source: fitted or fallback.",
      "enum": [
        "fitted",
        "fallback"
      ],
      "example": "fitted",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "sort_dir": {
      "default": "ASC",
      "description": "Sort direction for historical scan mode.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Start time in ISO 8601 UTC. Providing start or end enables historical scan mode.",
      "example": "2026-06-08T00:00:00Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [
    "exchange",
    "currency"
  ],
  "type": "object"
}
Request schema
{
  "properties": {
    "currency": {
      "description": "Base currency.",
      "example": "BTC",
      "type": "string"
    },
    "cursor": {
      "description": "Pagination cursor from meta.next_cursor.",
      "type": "string"
    },
    "date": {
      "description": "Snapshot cutoff time in ISO 8601 UTC. Snapshot mode returns the latest row at or before this timestamp.",
      "example": "2026-06-08T12:00:00Z",
      "format": "date-time",
      "type": "string"
    },
    "end": {
      "description": "End time in ISO 8601 UTC. Providing start or end enables historical scan mode.",
      "example": "2026-06-08T12:00:00Z",
      "format": "date-time",
      "type": "string"
    },
    "exchange": {
      "description": "Exchange name. Examples: deribit, binance, okx, bybit, bullish, derive.",
      "example": "deribit",
      "type": "string"
    },
    "expiry": {
      "description": "Expiry filter in ISO 8601 UTC. If omitted in snapshot mode, all expiries from the snapshot are returned.",
      "example": "2026-06-26T08:00:00Z",
      "format": "date-time",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of rows to return in historical scan mode.",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "margin": {
      "default": "inverse",
      "description": "Margin book. Inverse and linear surfaces are distinct and must not be combined.",
      "enum": [
        "inverse",
        "linear"
      ],
      "example": "inverse",
      "type": "string"
    },
    "model": {
      "default": "svi",
      "description": "Surface model. Defaults to 'svi'. Pass another model only when explicitly comparing model families.",
      "example": "svi",
      "type": "string"
    },
    "quality_tier": {
      "description": "Filter by engine trust label: trusted, indicative, or untrusted.",
      "enum": [
        "trusted",
        "indicative",
        "untrusted"
      ],
      "example": "trusted",
      "type": "string"
    },
    "slice_source": {
      "description": "Filter by slice source: fitted or fallback.",
      "enum": [
        "fitted",
        "fallback"
      ],
      "example": "fitted",
      "type": "string"
    },
    "sort_dir": {
      "default": "ASC",
      "description": "Sort direction for historical scan mode.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "start": {
      "description": "Start time in ISO 8601 UTC. Providing start or end enables historical scan mode.",
      "example": "2026-06-08T00:00:00Z",
      "format": "date-time",
      "type": "string"
    }
  },
  "required": [
    "exchange",
    "currency"
  ],
  "type": "object"
}
Example request
{
  "currency": "BTC",
  "cursor": "test",
  "date": "2026-06-08T12:00:00Z",
  "end": "2026-06-08T12:00:00Z",
  "exchange": "deribit",
  "expiry": "2026-06-26T08:00:00Z",
  "limit": 100,
  "margin": "inverse",
  "model": "svi",
  "quality_tier": "trusted",
  "slice_source": "fitted",
  "sort_dir": "ASC",
  "start": "2026-06-08T00:00:00Z"
}
Example response
{
  "data": [
    {
      "atm_iv": 48.2,
      "butterfly_25d": 1.4,
      "call_25d_iv": 47,
      "currency": "BTC",
      "date": "2026-06-08T12:00:00.000Z",
      "exchange": "deribit",
      "expiry": "2026-06-26T08:00:00.000Z",
      "fallback_age_seconds": 0,
      "forward": 104250.1,
      "margin": "inverse",
      "model": "svi",
      "model_params": {
        "a": 0.01,
        "b": 0.2,
        "m": 0,
        "rho": -0.4,
        "sigma": 0.3
      },
      "n_mark_only": 0,
      "n_one_sided": 9,
      "n_strikes": 64,
      "n_two_sided": 55,
      "put_25d_iv": 50.1,
      "quality_tier": "trusted",
      "rmse": 0.42,
      "skew_25d": -3.1,
      "slice_source": "fitted",
      "tau": 0.0465
    }
  ],
  "meta": {
    "date": "2026-06-08T12:00:00.000Z",
    "next_cursor": null
  }
}
GET/api/v1/vol-surface/snapshots
$0.10 default
Description

Proprietary volatility surface data - snapshots, slices, term structure, and strike diagnostics. Pay per request

Documentation

Vol Surface Snapshots

Returns surface-level calibration metadata from vol_surface_snapshots: index price, slice count, forward-curve JSON, and calendar-arbitrage diagnostics. Omit start/end for latest snapshot mode; pass start/end for paginated history.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "currency": {
      "description": "Base currency.",
      "example": "BTC",
      "required": true,
      "type": "string",
      "x-parameter-location": "query"
    },
    "cursor": {
      "description": "Pagination cursor from meta.next_cursor.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "date": {
      "description": "Snapshot cutoff time in ISO 8601 UTC. Snapshot mode returns the latest row at or before this timestamp.",
      "example": "2026-06-08T12:00:00Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "End time in ISO 8601 UTC. Providing start or end enables historical scan mode.",
      "example": "2026-06-08T12:00:00Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "description": "Exchange name. Examples: deribit, binance, okx, bybit, bullish, derive.",
      "example": "deribit",
      "required": true,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of rows to return in historical scan mode.",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "margin": {
      "default": "inverse",
      "description": "Margin book. Inverse and linear surfaces are distinct and must not be combined.",
      "enum": [
        "inverse",
        "linear"
      ],
      "example": "inverse",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "model": {
      "default": "svi",
      "description": "Surface model. Defaults to 'svi'. Pass another model only when explicitly comparing model families.",
      "example": "svi",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "sort_dir": {
      "default": "ASC",
      "description": "Sort direction for historical scan mode.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Start time in ISO 8601 UTC. Providing start or end enables historical scan mode.",
      "example": "2026-06-08T00:00:00Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    }
  },
  "required": [
    "exchange",
    "currency"
  ],
  "type": "object"
}
Request schema
{
  "properties": {
    "currency": {
      "description": "Base currency.",
      "example": "BTC",
      "type": "string"
    },
    "cursor": {
      "description": "Pagination cursor from meta.next_cursor.",
      "type": "string"
    },
    "date": {
      "description": "Snapshot cutoff time in ISO 8601 UTC. Snapshot mode returns the latest row at or before this timestamp.",
      "example": "2026-06-08T12:00:00Z",
      "format": "date-time",
      "type": "string"
    },
    "end": {
      "description": "End time in ISO 8601 UTC. Providing start or end enables historical scan mode.",
      "example": "2026-06-08T12:00:00Z",
      "format": "date-time",
      "type": "string"
    },
    "exchange": {
      "description": "Exchange name. Examples: deribit, binance, okx, bybit, bullish, derive.",
      "example": "deribit",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of rows to return in historical scan mode.",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "margin": {
      "default": "inverse",
      "description": "Margin book. Inverse and linear surfaces are distinct and must not be combined.",
      "enum": [
        "inverse",
        "linear"
      ],
      "example": "inverse",
      "type": "string"
    },
    "model": {
      "default": "svi",
      "description": "Surface model. Defaults to 'svi'. Pass another model only when explicitly comparing model families.",
      "example": "svi",
      "type": "string"
    },
    "sort_dir": {
      "default": "ASC",
      "description": "Sort direction for historical scan mode.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "start": {
      "description": "Start time in ISO 8601 UTC. Providing start or end enables historical scan mode.",
      "example": "2026-06-08T00:00:00Z",
      "format": "date-time",
      "type": "string"
    }
  },
  "required": [
    "exchange",
    "currency"
  ],
  "type": "object"
}
Example request
{
  "currency": "BTC",
  "cursor": "test",
  "date": "2026-06-08T12:00:00Z",
  "end": "2026-06-08T12:00:00Z",
  "exchange": "deribit",
  "limit": 100,
  "margin": "inverse",
  "model": "svi",
  "sort_dir": "ASC",
  "start": "2026-06-08T00:00:00Z"
}
Example response
{
  "data": [
    {
      "calendar_arb_in_range_violations": 0,
      "calendar_arb_max_excess": 0,
      "calendar_arb_pairs_checked": 9,
      "calendar_arb_violating_pairs": 0,
      "currency": "BTC",
      "date": "2026-06-08T12:00:00.000Z",
      "exchange": "deribit",
      "forward_curve": {
        "points": [
          {
            "forward": 104250.1,
            "tau": 0.08
          }
        ]
      },
      "index_price": 104000.25,
      "margin": "inverse",
      "model": "svi",
      "n_forward_knots": 7,
      "n_slices": 10
    }
  ],
  "meta": {
    "date": "2026-06-08T12:00:00.000Z",
    "next_cursor": null
  }
}
GET/api/v1/vol-surface/strikes
$0.10 default
Description

Proprietary volatility surface data - snapshots, slices, term structure, and strike diagnostics. Pay per request

Documentation

Vol Surface Strikes

Returns per-strike proprietary diagnostics and greeks from vol_surface_strikes. This is the heaviest table; latest snapshot mode is allowed broadly, while historical scans require expiry or instrument.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "currency": {
      "description": "Base currency.",
      "example": "BTC",
      "required": true,
      "type": "string",
      "x-parameter-location": "query"
    },
    "cursor": {
      "description": "Pagination cursor from meta.next_cursor.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "date": {
      "description": "Snapshot cutoff time in ISO 8601 UTC. Snapshot mode returns strikes at the latest fit at or before this timestamp.",
      "example": "2026-06-08T12:00:00Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "End time in ISO 8601 UTC. Historical strike scans require expiry or instrument.",
      "example": "2026-06-08T12:00:00Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "description": "Exchange name. Examples: deribit, binance, okx, bybit, bullish, derive.",
      "example": "deribit",
      "required": true,
      "type": "string",
      "x-parameter-location": "query"
    },
    "expiry": {
      "description": "Expiry filter in ISO 8601 UTC.",
      "example": "2026-06-26T08:00:00Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "instrument": {
      "description": "Option instrument identifier.",
      "example": "BTC-26JUN26-100000-C",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "latest": {
      "default": true,
      "description": "Whether snapshot mode should return only rows from the latest fit. Defaults to true.",
      "required": false,
      "type": "boolean",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 500,
      "description": "Maximum number of rows to return.",
      "example": 500,
      "maximum": 5000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "margin": {
      "default": "inverse",
      "description": "Margin book. Inverse and linear surfaces are distinct and must not be combined.",
      "enum": [
        "inverse",
        "linear"
      ],
      "example": "inverse",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "option_type": {
      "description": "Option type filter.",
      "enum": [
        "C",
        "P"
      ],
      "example": "C",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "sort_dir": {
      "default": "ASC",
      "description": "Sort direction for historical scan mode.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Start time in ISO 8601 UTC. Historical strike scans require expiry or instrument.",
      "example": "2026-06-08T00:00:00Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "strike": {
      "description": "Strike filter.",
      "example": 100000,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    }
  },
  "required": [
    "exchange",
    "currency"
  ],
  "type": "object"
}
Request schema
{
  "properties": {
    "currency": {
      "description": "Base currency.",
      "example": "BTC",
      "type": "string"
    },
    "cursor": {
      "description": "Pagination cursor from meta.next_cursor.",
      "type": "string"
    },
    "date": {
      "description": "Snapshot cutoff time in ISO 8601 UTC. Snapshot mode returns strikes at the latest fit at or before this timestamp.",
      "example": "2026-06-08T12:00:00Z",
      "format": "date-time",
      "type": "string"
    },
    "end": {
      "description": "End time in ISO 8601 UTC. Historical strike scans require expiry or instrument.",
      "example": "2026-06-08T12:00:00Z",
      "format": "date-time",
      "type": "string"
    },
    "exchange": {
      "description": "Exchange name. Examples: deribit, binance, okx, bybit, bullish, derive.",
      "example": "deribit",
      "type": "string"
    },
    "expiry": {
      "description": "Expiry filter in ISO 8601 UTC.",
      "example": "2026-06-26T08:00:00Z",
      "format": "date-time",
      "type": "string"
    },
    "instrument": {
      "description": "Option instrument identifier.",
      "example": "BTC-26JUN26-100000-C",
      "type": "string"
    },
    "latest": {
      "default": true,
      "description": "Whether snapshot mode should return only rows from the latest fit. Defaults to true.",
      "type": "boolean"
    },
    "limit": {
      "default": 500,
      "description": "Maximum number of rows to return.",
      "example": 500,
      "maximum": 5000,
      "minimum": 1,
      "type": "number"
    },
    "margin": {
      "default": "inverse",
      "description": "Margin book. Inverse and linear surfaces are distinct and must not be combined.",
      "enum": [
        "inverse",
        "linear"
      ],
      "example": "inverse",
      "type": "string"
    },
    "option_type": {
      "description": "Option type filter.",
      "enum": [
        "C",
        "P"
      ],
      "example": "C",
      "type": "string"
    },
    "sort_dir": {
      "default": "ASC",
      "description": "Sort direction for historical scan mode.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "start": {
      "description": "Start time in ISO 8601 UTC. Historical strike scans require expiry or instrument.",
      "example": "2026-06-08T00:00:00Z",
      "format": "date-time",
      "type": "string"
    },
    "strike": {
      "description": "Strike filter.",
      "example": 100000,
      "type": "number"
    }
  },
  "required": [
    "exchange",
    "currency"
  ],
  "type": "object"
}
Example request
{
  "currency": "BTC",
  "cursor": "test",
  "date": "2026-06-08T12:00:00Z",
  "end": "2026-06-08T12:00:00Z",
  "exchange": "deribit",
  "expiry": "2026-06-26T08:00:00Z",
  "instrument": "BTC-26JUN26-100000-C",
  "latest": true,
  "limit": 500,
  "margin": "inverse",
  "option_type": "C",
  "sort_dir": "ASC",
  "start": "2026-06-08T00:00:00Z",
  "strike": 100000
}
Example response
{
  "data": [
    {
      "ask_iv": 48.2,
      "bid_iv": 47.5,
      "bs_delta": 0.55,
      "bs_gamma": 0.00004,
      "bs_theta": -120.4,
      "bs_vega": 155.2,
      "currency": "BTC",
      "date": "2026-06-08T12:00:00.000Z",
      "deviation_vol": -0.1,
      "exchange": "deribit",
      "expiry": "2026-06-26T08:00:00.000Z",
      "instrument": "BTC-26JUN26-100000-C",
      "log_moneyness": -0.0416,
      "margin": "inverse",
      "mark_iv": 47.9,
      "model_iv": 48,
      "mv_delta": 0.52,
      "option_type": "C",
      "smile_delta": 0.53,
      "strike": 100000
    }
  ],
  "meta": {
    "date": "2026-06-08T12:00:00.000Z",
    "next_cursor": null
  }
}
GET/api/v1/vol-surface/term-structure
$0.10 default
Description

Proprietary volatility surface data - snapshots, slices, term structure, and strike diagnostics. Pay per request

Documentation

Vol Surface Term Structure

Returns constant-maturity proprietary term-structure rows from vol_surface_term_structure, including ATM IV, total variance, fixed-tenor skew metrics, forward, term slope, forward vol, and source label.

**Price:** $0.1 USDC per call

The request and x402 payment go directly to Laevitas. The live 402 challenge is authoritative for the price, network, asset and payTo address.

Pricing
$0.10 default
Authentication

No API key is required for x402. Pay Laevitas directly using the live 402 challenge, which is authoritative for price, network, asset and payTo.

Parameters
{
  "properties": {
    "currency": {
      "description": "Base currency.",
      "example": "BTC",
      "required": true,
      "type": "string",
      "x-parameter-location": "query"
    },
    "cursor": {
      "description": "Pagination cursor from meta.next_cursor.",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "date": {
      "description": "Snapshot cutoff time in ISO 8601 UTC. Snapshot mode returns the latest row at or before this timestamp.",
      "example": "2026-06-08T12:00:00Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "end": {
      "description": "End time in ISO 8601 UTC. Providing start or end enables historical scan mode.",
      "example": "2026-06-08T12:00:00Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "exchange": {
      "description": "Exchange name. Examples: deribit, binance, okx, bybit, bullish, derive.",
      "example": "deribit",
      "required": true,
      "type": "string",
      "x-parameter-location": "query"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of rows to return in historical scan mode.",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    },
    "margin": {
      "default": "inverse",
      "description": "Margin book. Inverse and linear surfaces are distinct and must not be combined.",
      "enum": [
        "inverse",
        "linear"
      ],
      "example": "inverse",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "sort_dir": {
      "default": "ASC",
      "description": "Sort direction for historical scan mode.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "start": {
      "description": "Start time in ISO 8601 UTC. Providing start or end enables historical scan mode.",
      "example": "2026-06-08T00:00:00Z",
      "format": "date-time",
      "required": false,
      "type": "string",
      "x-parameter-location": "query"
    },
    "tenor_days": {
      "description": "Constant-maturity tenor in days.",
      "example": 30,
      "minimum": 1,
      "required": false,
      "type": "number",
      "x-parameter-location": "query"
    }
  },
  "required": [
    "exchange",
    "currency"
  ],
  "type": "object"
}
Request schema
{
  "properties": {
    "currency": {
      "description": "Base currency.",
      "example": "BTC",
      "type": "string"
    },
    "cursor": {
      "description": "Pagination cursor from meta.next_cursor.",
      "type": "string"
    },
    "date": {
      "description": "Snapshot cutoff time in ISO 8601 UTC. Snapshot mode returns the latest row at or before this timestamp.",
      "example": "2026-06-08T12:00:00Z",
      "format": "date-time",
      "type": "string"
    },
    "end": {
      "description": "End time in ISO 8601 UTC. Providing start or end enables historical scan mode.",
      "example": "2026-06-08T12:00:00Z",
      "format": "date-time",
      "type": "string"
    },
    "exchange": {
      "description": "Exchange name. Examples: deribit, binance, okx, bybit, bullish, derive.",
      "example": "deribit",
      "type": "string"
    },
    "limit": {
      "default": 100,
      "description": "Maximum number of rows to return in historical scan mode.",
      "example": 100,
      "maximum": 1000,
      "minimum": 1,
      "type": "number"
    },
    "margin": {
      "default": "inverse",
      "description": "Margin book. Inverse and linear surfaces are distinct and must not be combined.",
      "enum": [
        "inverse",
        "linear"
      ],
      "example": "inverse",
      "type": "string"
    },
    "sort_dir": {
      "default": "ASC",
      "description": "Sort direction for historical scan mode.",
      "enum": [
        "ASC",
        "DESC"
      ],
      "type": "string"
    },
    "start": {
      "description": "Start time in ISO 8601 UTC. Providing start or end enables historical scan mode.",
      "example": "2026-06-08T00:00:00Z",
      "format": "date-time",
      "type": "string"
    },
    "tenor_days": {
      "description": "Constant-maturity tenor in days.",
      "example": 30,
      "minimum": 1,
      "type": "number"
    }
  },
  "required": [
    "exchange",
    "currency"
  ],
  "type": "object"
}
Example request
{
  "currency": "BTC",
  "cursor": "test",
  "date": "2026-06-08T12:00:00Z",
  "end": "2026-06-08T12:00:00Z",
  "exchange": "deribit",
  "limit": 100,
  "margin": "inverse",
  "sort_dir": "ASC",
  "start": "2026-06-08T00:00:00Z",
  "tenor_days": 30
}
Example response
{
  "data": [
    {
      "atm_iv": 49.1,
      "butterfly_25d": 1.5,
      "currency": "BTC",
      "date": "2026-06-08T12:00:00.000Z",
      "exchange": "deribit",
      "forward": 104500.2,
      "forward_tenor": "30d-60d",
      "forward_vol": 50.3,
      "margin": "inverse",
      "skew_25d": -3.4,
      "source": "interpolated",
      "tenor_days": 30,
      "term_slope": 0.7,
      "total_variance": 0.198
    }
  ],
  "meta": {
    "date": "2026-06-08T12:00:00.000Z",
    "next_cursor": null
  }
}