{
  "components": {
    "headers": {
      "RateLimitBurstLimit": {
        "description": "Requests allowed per rolling second.",
        "schema": {
          "type": "integer"
        }
      },
      "RateLimitBurstRemaining": {
        "description": "Requests remaining in the current one-second window.",
        "schema": {
          "type": "integer"
        }
      },
      "RateLimitLimit": {
        "description": "Requests allowed per rolling minute.",
        "schema": {
          "type": "integer"
        }
      },
      "RateLimitRemaining": {
        "description": "Requests remaining in the current minute window.",
        "schema": {
          "type": "integer"
        }
      },
      "RateLimitReset": {
        "description": "Unix epoch milliseconds when one more request is allowed in the minute window.",
        "schema": {
          "type": "integer"
        }
      },
      "RetryAfter": {
        "description": "Seconds to wait before retrying.",
        "schema": {
          "type": "integer"
        }
      }
    },
    "schemas": {
      "AccountInfoRow": {
        "additionalProperties": false,
        "description": "Plan and entitlements.",
        "properties": {
          "entitlements": {
            "additionalProperties": false,
            "description": "What the plan allows.",
            "properties": {
              "datasets": {
                "description": "Dataset releases enabled for API keys.",
                "items": {
                  "description": "Dataset.",
                  "enum": [
                    "options",
                    "futures",
                    "equities",
                    "indices"
                  ],
                  "type": "string"
                },
                "type": "array"
              },
              "history_days": {
                "description": "Days of history the plan may query.",
                "type": "integer"
              },
              "overnight": {
                "description": "Overnight (gth) session data is included.",
                "type": "boolean"
              },
              "streaming": {
                "description": "WebSocket streams are included.",
                "type": "boolean"
              }
            },
            "required": [
              "datasets",
              "history_days",
              "overnight",
              "streaming"
            ],
            "type": "object"
          },
          "key_prefix": {
            "description": "Public prefix of the calling key.",
            "type": "string"
          },
          "plan": {
            "description": "API plan.",
            "enum": [
              "api_developer",
              "api_pro"
            ],
            "type": "string"
          },
          "rate_limit": {
            "additionalProperties": false,
            "description": "Account-wide limits shared by all keys.",
            "properties": {
              "burst_per_second": {
                "description": "Requests per rolling second.",
                "type": "integer"
              },
              "per_minute": {
                "description": "Requests per rolling minute.",
                "type": "integer"
              }
            },
            "required": [
              "per_minute",
              "burst_per_second"
            ],
            "type": "object"
          }
        },
        "required": [
          "plan",
          "key_prefix",
          "entitlements",
          "rate_limit"
        ],
        "type": "object"
      },
      "AccountLimitsRow": {
        "additionalProperties": false,
        "description": "Rate-limit windows.",
        "properties": {
          "burst_limit": {
            "description": "Requests allowed per rolling second.",
            "type": "integer"
          },
          "burst_remaining": {
            "description": "Requests left in the one-second window.",
            "type": "integer"
          },
          "limit": {
            "description": "Requests allowed per rolling minute.",
            "type": "integer"
          },
          "remaining": {
            "description": "Requests left in the minute window.",
            "type": "integer"
          },
          "reset": {
            "description": "When one more request is allowed in the minute window. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          }
        },
        "required": [
          "limit",
          "remaining",
          "reset",
          "burst_limit",
          "burst_remaining"
        ],
        "type": "object"
      },
      "AccountRequestsRow": {
        "additionalProperties": false,
        "description": "One logged request.",
        "properties": {
          "bytes_out": {
            "description": "Response bytes sent (after compression).",
            "type": "integer"
          },
          "client_ip": {
            "description": "Client address as seen by the API.",
            "type": "string"
          },
          "duration_ms": {
            "description": "Time to produce the response, in milliseconds.",
            "type": "number"
          },
          "error_code": {
            "description": "Error code of a failed request, otherwise null.",
            "type": [
              "string",
              "null"
            ]
          },
          "key_prefix": {
            "description": "Public prefix of the key that made the request.",
            "type": "string"
          },
          "method": {
            "description": "HTTP method.",
            "type": "string"
          },
          "path": {
            "description": "Request path.",
            "type": "string"
          },
          "query": {
            "description": "Query string as sent, with credential-like parameters removed.",
            "type": "string"
          },
          "request_id": {
            "description": "The X-Request-ID of the request.",
            "type": "string"
          },
          "route": {
            "description": "Route template, for example /v1/options/flow.",
            "type": "string"
          },
          "rows": {
            "description": "Rows in the response.",
            "type": "integer"
          },
          "status": {
            "description": "HTTP status (101 for a WebSocket upgrade).",
            "type": "integer"
          },
          "timestamp": {
            "description": "When the request was received. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "user_agent": {
            "description": "User-Agent header.",
            "type": "string"
          },
          "ws_bytes_out": {
            "description": "Bytes sent over a closed WebSocket connection; set on its closing summary row.",
            "type": [
              "integer",
              "null"
            ]
          },
          "ws_close_code": {
            "description": "Close code of a closed WebSocket connection; set on its closing summary row.",
            "type": [
              "integer",
              "null"
            ]
          },
          "ws_duration_ms": {
            "description": "Duration of a closed WebSocket connection in milliseconds; set on its closing summary row.",
            "type": [
              "integer",
              "null"
            ]
          },
          "ws_event_type": {
            "description": "WebSocket event type; null on other requests.",
            "type": [
              "string",
              "null"
            ]
          },
          "ws_messages_out": {
            "description": "Messages sent over a closed WebSocket connection; set on its closing summary row.",
            "type": [
              "integer",
              "null"
            ]
          }
        },
        "required": [
          "request_id",
          "timestamp",
          "method",
          "route",
          "path",
          "query",
          "status",
          "error_code",
          "duration_ms",
          "bytes_out",
          "rows",
          "key_prefix",
          "client_ip",
          "user_agent",
          "ws_event_type",
          "ws_messages_out",
          "ws_bytes_out",
          "ws_close_code",
          "ws_duration_ms"
        ],
        "type": "object"
      },
      "AccountUsageRow": {
        "additionalProperties": false,
        "description": "Usage of one time bucket.",
        "properties": {
          "bytes_out": {
            "description": "Response bytes sent (after compression).",
            "type": "integer"
          },
          "client_errors": {
            "description": "Responses with status 400 to 499, including rate-limited ones.",
            "type": "integer"
          },
          "end_time": {
            "description": "End of the bucket (exclusive). Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "errors": {
            "description": "Responses with status 500 or above.",
            "type": "integer"
          },
          "rate_limited": {
            "description": "Responses with status 429.",
            "type": "integer"
          },
          "requests": {
            "description": "Requests received.",
            "type": "integer"
          },
          "routes": {
            "description": "Per-route breakdown, most requests first; present when by_route=true and the bucket has requests.",
            "items": {
              "additionalProperties": false,
              "properties": {
                "bytes_out": {
                  "description": "Response bytes sent.",
                  "type": "integer"
                },
                "client_errors": {
                  "description": "Responses with status 400 to 499, including rate-limited ones.",
                  "type": "integer"
                },
                "errors": {
                  "description": "Responses with status 500 or above.",
                  "type": "integer"
                },
                "rate_limited": {
                  "description": "Responses with status 429.",
                  "type": "integer"
                },
                "requests": {
                  "description": "Requests received.",
                  "type": "integer"
                },
                "route": {
                  "description": "Route template, for example /v1/options/flow.",
                  "type": "string"
                }
              },
              "required": [
                "route",
                "requests",
                "errors",
                "client_errors",
                "rate_limited",
                "bytes_out"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "start_time": {
            "description": "Start of the bucket. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          }
        },
        "required": [
          "start_time",
          "end_time",
          "requests",
          "errors",
          "client_errors",
          "rate_limited",
          "bytes_out"
        ],
        "type": "object"
      },
      "Error": {
        "properties": {
          "error": {
            "properties": {
              "code": {
                "description": "Stable machine-readable error code, for example invalid_parameter, rate_limited, data_unavailable.",
                "type": "string"
              },
              "details": {
                "items": {
                  "properties": {
                    "message": {
                      "type": "string"
                    },
                    "param": {
                      "type": "string"
                    }
                  },
                  "required": [
                    "param",
                    "message"
                  ],
                  "type": "object"
                },
                "type": "array"
              },
              "message": {
                "description": "Human-readable explanation.",
                "type": "string"
              },
              "request_id": {
                "description": "Quote this when contacting support.",
                "type": "string"
              },
              "retry_after_ms": {
                "description": "Milliseconds to wait before retrying, when the failure is retryable.",
                "type": "integer"
              }
            },
            "required": [
              "code",
              "message",
              "request_id"
            ],
            "type": "object"
          }
        },
        "required": [
          "error"
        ],
        "type": "object"
      },
      "Export": {
        "additionalProperties": false,
        "description": "An export job.",
        "properties": {
          "bytes": {
            "description": "File size once ready.",
            "type": "integer"
          },
          "created_timestamp": {
            "description": "When the job was accepted. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "download_url": {
            "description": "Relative URL of the file once ready.",
            "type": "string"
          },
          "error_code": {
            "description": "Failure code when the job failed.",
            "type": "string"
          },
          "failed_timestamp": {
            "description": "When the job failed for good, once it has. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "failure_reason": {
            "description": "Failure description when the job failed.",
            "type": "string"
          },
          "id": {
            "description": "Export id.",
            "type": "string"
          },
          "last_attempt_timestamp": {
            "description": "When the job last ran and did not finish, once it has. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "pages": {
            "description": "Pages of the endpoint the export read once ready.",
            "type": "integer"
          },
          "path": {
            "description": "Endpoint path.",
            "type": "string"
          },
          "query": {
            "additionalProperties": {
              "type": "string"
            },
            "description": "The query as requested: one string per parameter (numbers and booleans as text, a list as a comma-separated string).",
            "type": "object"
          },
          "resolution": {
            "description": "Summary of what the file holds once ready.",
            "type": "string"
          },
          "revision": {
            "description": "Increases with every state change.",
            "type": "integer"
          },
          "rows": {
            "description": "Rows in the file once ready.",
            "type": "integer"
          },
          "status": {
            "description": "Job state.",
            "enum": [
              "queued",
              "retrying",
              "awaiting_configuration",
              "failed",
              "ready"
            ],
            "type": "string"
          },
          "truncated": {
            "description": "The data was cut at the row, size or page limit once ready.",
            "type": "boolean"
          }
        },
        "required": [
          "id",
          "revision",
          "status",
          "path",
          "query",
          "created_timestamp"
        ],
        "type": "object"
      },
      "ExportFile": {
        "additionalProperties": false,
        "description": "The downloaded export.",
        "properties": {
          "data": {
            "description": "Every row of every page, in order: an array for list endpoints, the object itself for single-object endpoints."
          },
          "meta": {
            "additionalProperties": true,
            "description": "The endpoint's meta (request_id is the export id); coverage.complete is false and coverage.truncated true when the data was cut.",
            "type": "object"
          },
          "pages": {
            "description": "Pages of the endpoint the export read.",
            "type": "integer"
          },
          "truncated": {
            "description": "The data was cut at the row (100,000), size (64 MiB) or page limit.",
            "type": "boolean"
          }
        },
        "required": [
          "data",
          "meta",
          "pages",
          "truncated"
        ],
        "type": "object"
      },
      "ExportRequest": {
        "additionalProperties": false,
        "description": "Export request.",
        "properties": {
          "path": {
            "description": "Path of a data endpoint in the catalog, for example /v1/options/trades.",
            "pattern": "^/v1/[a-z0-9/-]+$",
            "type": "string"
          },
          "query": {
            "additionalProperties": {
              "oneOf": [
                {
                  "type": "string"
                },
                {
                  "type": "number"
                },
                {
                  "type": "boolean"
                },
                {
                  "items": {
                    "oneOf": [
                      {
                        "type": "string"
                      },
                      {
                        "type": "number"
                      },
                      {
                        "type": "boolean"
                      }
                    ]
                  },
                  "type": "array"
                }
              ]
            },
            "description": "The endpoint's query parameters, at most 32; values are strings, numbers, booleans or arrays of those (a list parameter). On a paginated endpoint limit is the maximum number of rows in the file (1 to 100,000).",
            "type": "object"
          }
        },
        "required": [
          "path"
        ],
        "type": "object"
      },
      "ExportResponse": {
        "additionalProperties": false,
        "properties": {
          "data": {
            "$ref": "#/components/schemas/Export"
          },
          "meta": {
            "additionalProperties": false,
            "properties": {
              "request_id": {
                "description": "Identifier of this request, for support.",
                "type": "string"
              }
            },
            "required": [
              "request_id"
            ],
            "type": "object"
          }
        },
        "required": [
          "data",
          "meta"
        ],
        "type": "object"
      },
      "FuturesBarsRow": {
        "additionalProperties": false,
        "description": "One bar.",
        "properties": {
          "close": {
            "description": "Close.",
            "type": "number"
          },
          "complete": {
            "description": "Every minute of the bar has been received.",
            "type": "boolean"
          },
          "contract": {
            "description": "Dated contract.",
            "type": "string"
          },
          "high": {
            "description": "High.",
            "type": "number"
          },
          "low": {
            "description": "Low.",
            "type": "number"
          },
          "open": {
            "description": "Open.",
            "type": "number"
          },
          "start_time": {
            "description": "Start of the bar. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "trading_date": {
            "description": "Trading date of a daily bar; null for intraday bars.",
            "format": "date",
            "type": [
              "string",
              "null"
            ]
          },
          "volume": {
            "description": "Contracts traded.",
            "type": [
              "integer",
              "null"
            ]
          }
        },
        "required": [
          "close",
          "complete",
          "contract",
          "high",
          "low",
          "open",
          "start_time",
          "trading_date",
          "volume"
        ],
        "type": "object"
      },
      "FuturesBookRow": {
        "additionalProperties": false,
        "description": "The displayed order book of one contract.",
        "properties": {
          "ask_levels": {
            "description": "Levels held on the ask side before the levels limit is applied.",
            "type": "integer"
          },
          "asks": {
            "description": "Ask levels, best (lowest) first.",
            "items": {
              "additionalProperties": false,
              "description": "One price level.",
              "properties": {
                "orders": {
                  "description": "Displayed orders at the level.",
                  "type": "integer"
                },
                "price": {
                  "description": "Price.",
                  "type": "number"
                },
                "price_ticks": {
                  "description": "Price as an integer count of ticks, as a string.",
                  "type": "string"
                },
                "size": {
                  "description": "Displayed contracts at the level.",
                  "type": "integer"
                }
              },
              "required": [
                "orders",
                "price",
                "price_ticks",
                "size"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "bid_levels": {
            "description": "Levels held on the bid side before the levels limit is applied.",
            "type": "integer"
          },
          "bids": {
            "description": "Bid levels, best (highest) first.",
            "items": {
              "additionalProperties": false,
              "description": "One price level.",
              "properties": {
                "orders": {
                  "description": "Displayed orders at the level.",
                  "type": "integer"
                },
                "price": {
                  "description": "Price.",
                  "type": "number"
                },
                "price_ticks": {
                  "description": "Price as an integer count of ticks, as a string.",
                  "type": "string"
                },
                "size": {
                  "description": "Displayed contracts at the level.",
                  "type": "integer"
                }
              },
              "required": [
                "orders",
                "price",
                "price_ticks",
                "size"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "contract": {
            "description": "Dated contract.",
            "type": "string"
          },
          "depth_type": {
            "description": "by_order: individual orders aggregated per level; by_price: price levels as published.",
            "enum": [
              "by_order",
              "by_price",
              null
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "sequence": {
            "description": "Book sequence, as a string.",
            "type": "string"
          },
          "symbol": {
            "description": "Product root.",
            "type": "string"
          },
          "tick_size": {
            "description": "Minimum price increment.",
            "type": "number"
          },
          "timestamp": {
            "description": "Time of the book. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": [
              "integer",
              "null"
            ]
          },
          "valid": {
            "description": "The book is synchronized; a false book must not be used.",
            "type": "boolean"
          }
        },
        "required": [
          "ask_levels",
          "asks",
          "bid_levels",
          "bids",
          "contract",
          "depth_type",
          "sequence",
          "symbol",
          "tick_size",
          "timestamp",
          "valid"
        ],
        "type": "object"
      },
      "FuturesContractsRow": {
        "additionalProperties": false,
        "description": "One dated contract.",
        "properties": {
          "contract": {
            "description": "Dated contract, for example ESZ6.",
            "type": "string"
          },
          "contract_month": {
            "description": "Contract month, YYYY-MM.",
            "type": "string"
          },
          "exchange": {
            "description": "Listing exchange.",
            "enum": [
              "cme",
              "cbot",
              "nymex",
              "comex"
            ],
            "type": "string"
          },
          "is_front": {
            "description": "The contract is the current front month.",
            "type": "boolean"
          },
          "month_code": {
            "description": "Futures month code letter.",
            "type": "string"
          },
          "settlement_time": {
            "description": "Final settlement (equity-index futures only). Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": [
              "integer",
              "null"
            ]
          },
          "symbol": {
            "description": "Product root.",
            "type": "string"
          }
        },
        "required": [
          "contract",
          "contract_month",
          "exchange",
          "is_front",
          "month_code",
          "settlement_time",
          "symbol"
        ],
        "type": "object"
      },
      "FuturesCvdRow": {
        "additionalProperties": false,
        "description": "One point of the cumulative delta.",
        "properties": {
          "contract": {
            "description": "Dated contract.",
            "type": "string"
          },
          "timestamp": {
            "description": "Time of the print. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "value": {
            "description": "Cumulative buy minus sell contracts after the print.",
            "type": "number"
          }
        },
        "required": [
          "contract",
          "timestamp",
          "value"
        ],
        "type": "object"
      },
      "FuturesDeltaBarsRow": {
        "additionalProperties": false,
        "description": "Volume split of one bar.",
        "properties": {
          "buy_volume": {
            "description": "Aggressive buy contracts.",
            "type": "integer"
          },
          "closed": {
            "description": "The bar has closed.",
            "type": "boolean"
          },
          "contract": {
            "description": "Dated contract.",
            "type": "string"
          },
          "cumulative_delta": {
            "description": "Running total of delta from the first returned bar.",
            "type": "integer"
          },
          "delta": {
            "description": "Buy minus sell contracts.",
            "type": "integer"
          },
          "end_time": {
            "description": "End of the bar. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "sell_volume": {
            "description": "Aggressive sell contracts.",
            "type": "integer"
          },
          "start_time": {
            "description": "Start of the bar. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "trade_count": {
            "description": "Prints in the bar.",
            "type": "integer"
          },
          "unknown_volume": {
            "description": "Contracts whose side is unknown.",
            "type": "integer"
          },
          "volume": {
            "description": "Contracts traded in the bar.",
            "type": "integer"
          }
        },
        "required": [
          "buy_volume",
          "closed",
          "contract",
          "cumulative_delta",
          "delta",
          "end_time",
          "sell_volume",
          "start_time",
          "trade_count",
          "unknown_volume",
          "volume"
        ],
        "type": "object"
      },
      "FuturesFlowRow": {
        "additionalProperties": false,
        "description": "One retained print.",
        "properties": {
          "contract": {
            "description": "Dated contract.",
            "type": "string"
          },
          "id": {
            "description": "Stable identifier of the print; unique within a contract.",
            "type": "string"
          },
          "notional": {
            "description": "US dollar value of the print: price x size x point value.",
            "type": "number"
          },
          "price": {
            "description": "Price.",
            "type": "number"
          },
          "price_ticks": {
            "description": "Price as an integer count of ticks, as a string (it can exceed 2^53 for fine-tick products).",
            "type": "string"
          },
          "side": {
            "description": "Aggressor side; unknown when it could not be determined.",
            "enum": [
              "buy",
              "sell",
              "unknown"
            ],
            "type": "string"
          },
          "size": {
            "description": "Contracts.",
            "type": "integer"
          },
          "timestamp": {
            "description": "Time of the print. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          }
        },
        "required": [
          "contract",
          "id",
          "notional",
          "price",
          "price_ticks",
          "side",
          "size",
          "timestamp"
        ],
        "type": "object"
      },
      "FuturesFootprintRow": {
        "additionalProperties": false,
        "description": "One footprint bar.",
        "properties": {
          "cells": {
            "description": "Volume by price, lowest price first.",
            "items": {
              "additionalProperties": false,
              "description": "Volume traded at one price row.",
              "properties": {
                "buy_imbalance": {
                  "description": "Buy volume dominates by the imbalance rule.",
                  "type": "boolean"
                },
                "buy_volume": {
                  "description": "Contracts traded at the ask (aggressive buys).",
                  "type": "integer"
                },
                "delta": {
                  "description": "Buy minus sell contracts.",
                  "type": "integer"
                },
                "in_value_area": {
                  "description": "The row is inside the bar's value area.",
                  "type": "boolean"
                },
                "is_poc": {
                  "description": "The row is the bar's point of control.",
                  "type": "boolean"
                },
                "price": {
                  "description": "Price (lowest price of the row when grouped).",
                  "type": "number"
                },
                "price_ticks": {
                  "description": "Price as an integer count of ticks, as a string.",
                  "type": "string"
                },
                "sell_imbalance": {
                  "description": "Sell volume dominates by the imbalance rule.",
                  "type": "boolean"
                },
                "sell_volume": {
                  "description": "Contracts traded at the bid (aggressive sells).",
                  "type": "integer"
                },
                "stacked_buy_imbalance": {
                  "description": "The row is part of a stacked buy imbalance.",
                  "type": "boolean"
                },
                "stacked_sell_imbalance": {
                  "description": "The row is part of a stacked sell imbalance.",
                  "type": "boolean"
                },
                "total_volume": {
                  "description": "All contracts at the row.",
                  "type": "integer"
                },
                "trade_count": {
                  "description": "Prints at the row.",
                  "type": "integer"
                },
                "unknown_volume": {
                  "description": "Contracts whose side is unknown.",
                  "type": "integer"
                }
              },
              "required": [
                "buy_imbalance",
                "buy_volume",
                "delta",
                "in_value_area",
                "is_poc",
                "price",
                "price_ticks",
                "sell_imbalance",
                "sell_volume",
                "stacked_buy_imbalance",
                "stacked_sell_imbalance",
                "total_volume",
                "trade_count",
                "unknown_volume"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "closed": {
            "description": "The bar has closed.",
            "type": "boolean"
          },
          "contract": {
            "description": "Dated contract.",
            "type": "string"
          },
          "delta": {
            "description": "Buy minus sell contracts in the bar.",
            "type": "integer"
          },
          "end_time": {
            "description": "End of the bar. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "poc": {
            "description": "Point of control: the price with the most volume in the bar.",
            "type": [
              "number",
              "null"
            ]
          },
          "start_time": {
            "description": "Start of the bar. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "trade_count": {
            "description": "Prints in the bar.",
            "type": "integer"
          },
          "value_area_high": {
            "description": "Upper edge of the bar's value area.",
            "type": [
              "number",
              "null"
            ]
          },
          "value_area_low": {
            "description": "Lower edge of the bar's value area.",
            "type": [
              "number",
              "null"
            ]
          },
          "volume": {
            "description": "Contracts traded in the bar.",
            "type": "integer"
          }
        },
        "required": [
          "cells",
          "closed",
          "contract",
          "delta",
          "end_time",
          "poc",
          "start_time",
          "trade_count",
          "value_area_high",
          "value_area_low",
          "volume"
        ],
        "type": "object"
      },
      "FuturesLiquidityHeatmapRow": {
        "additionalProperties": false,
        "description": "Displayed size at a price over a time span.",
        "properties": {
          "aggregated": {
            "description": "The span is a bin of several observations.",
            "type": "boolean"
          },
          "ask_size": {
            "description": "Peak displayed ask size.",
            "type": "integer"
          },
          "bid_size": {
            "description": "Peak displayed bid size.",
            "type": "integer"
          },
          "contract": {
            "description": "Dated contract.",
            "type": "string"
          },
          "end_time": {
            "description": "End of the span. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "price": {
            "description": "Price (the lowest price of the row when grouped).",
            "type": "number"
          },
          "start_time": {
            "description": "Start of the span. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          }
        },
        "required": [
          "aggregated",
          "ask_size",
          "bid_size",
          "contract",
          "end_time",
          "price",
          "start_time"
        ],
        "type": "object"
      },
      "FuturesLiquidityRow": {
        "additionalProperties": false,
        "description": "Displayed liquidity of one contract.",
        "properties": {
          "ask_levels": {
            "description": "Displayed ask levels.",
            "type": "integer"
          },
          "ask_size_total": {
            "description": "Displayed ask size over every level.",
            "type": "integer"
          },
          "ask_size_touch": {
            "description": "Displayed size at the best ask.",
            "type": [
              "integer",
              "null"
            ]
          },
          "ask_size_within": {
            "description": "Displayed ask size within ticks of the best ask.",
            "type": "integer"
          },
          "best_ask": {
            "description": "Best ask.",
            "type": [
              "number",
              "null"
            ]
          },
          "best_bid": {
            "description": "Best bid.",
            "type": [
              "number",
              "null"
            ]
          },
          "bid_levels": {
            "description": "Displayed bid levels.",
            "type": "integer"
          },
          "bid_size_total": {
            "description": "Displayed bid size over every level.",
            "type": "integer"
          },
          "bid_size_touch": {
            "description": "Displayed size at the best bid.",
            "type": [
              "integer",
              "null"
            ]
          },
          "bid_size_within": {
            "description": "Displayed bid size within ticks of the best bid.",
            "type": "integer"
          },
          "contract": {
            "description": "Dated contract.",
            "type": "string"
          },
          "imbalance": {
            "description": "(bid size - ask size) / (bid size + ask size) within ticks, from -1 to 1.",
            "type": [
              "number",
              "null"
            ]
          },
          "mid": {
            "description": "Midpoint of the best bid and ask.",
            "type": [
              "number",
              "null"
            ]
          },
          "spread": {
            "description": "Best ask minus best bid.",
            "type": [
              "number",
              "null"
            ]
          },
          "spread_ticks": {
            "description": "Spread in ticks.",
            "type": [
              "integer",
              "null"
            ]
          },
          "symbol": {
            "description": "Product root.",
            "type": "string"
          },
          "ticks": {
            "description": "Depth used for the within-depth sizes, in ticks.",
            "type": "integer"
          },
          "timestamp": {
            "description": "Time of the book. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": [
              "integer",
              "null"
            ]
          },
          "valid": {
            "description": "The book is synchronized.",
            "type": "boolean"
          }
        },
        "required": [
          "ask_levels",
          "ask_size_total",
          "ask_size_touch",
          "ask_size_within",
          "best_ask",
          "best_bid",
          "bid_levels",
          "bid_size_total",
          "bid_size_touch",
          "bid_size_within",
          "contract",
          "imbalance",
          "mid",
          "spread",
          "spread_ticks",
          "symbol",
          "ticks",
          "timestamp",
          "valid"
        ],
        "type": "object"
      },
      "FuturesOrderFlowRow": {
        "additionalProperties": false,
        "description": "One print or group of prints.",
        "properties": {
          "aggregated": {
            "description": "The row groups several prints.",
            "type": "boolean"
          },
          "contract": {
            "description": "Dated contract.",
            "type": "string"
          },
          "id": {
            "description": "Identifier of the print; grouped rows carry an aggregate identifier.",
            "type": "string"
          },
          "price": {
            "description": "Price.",
            "type": "number"
          },
          "price_ticks": {
            "description": "Price as an integer count of ticks, as a string.",
            "type": "string"
          },
          "side": {
            "description": "Aggressor side.",
            "enum": [
              "buy",
              "sell",
              "unknown"
            ],
            "type": "string"
          },
          "size": {
            "description": "Contracts.",
            "type": "integer"
          },
          "timestamp": {
            "description": "Time of the print (the last print of a group). Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "trade_count": {
            "description": "Prints in the row.",
            "type": "integer"
          }
        },
        "required": [
          "aggregated",
          "contract",
          "id",
          "price",
          "price_ticks",
          "side",
          "size",
          "timestamp",
          "trade_count"
        ],
        "type": "object"
      },
      "FuturesProductsRow": {
        "additionalProperties": false,
        "description": "One futures product.",
        "properties": {
          "category": {
            "description": "Product category: equity_index, metals, energy, fx, interest_rates, agriculture, livestock or cryptocurrency.",
            "type": "string"
          },
          "currency": {
            "description": "Currency of point_value.",
            "type": "string"
          },
          "exchange": {
            "description": "Listing exchange.",
            "enum": [
              "cme",
              "cbot",
              "nymex",
              "comex"
            ],
            "type": "string"
          },
          "front_contract": {
            "description": "Dated front month, null until resolved.",
            "type": [
              "string",
              "null"
            ]
          },
          "name": {
            "description": "Product name.",
            "type": "string"
          },
          "point_value": {
            "description": "US dollars per one price point.",
            "type": "number"
          },
          "price_precision": {
            "description": "Decimal places of a quoted price.",
            "type": "integer"
          },
          "quote_unit": {
            "description": "What the price is quoted in, for example index points.",
            "type": "string"
          },
          "status": {
            "description": "How the product is served now.",
            "enum": [
              "active",
              "available",
              "unavailable"
            ],
            "type": "string"
          },
          "symbol": {
            "description": "Product root, for example ES.",
            "type": "string"
          },
          "tick_notes": {
            "description": "How a contract-dependent tick is determined.",
            "type": [
              "string",
              "null"
            ]
          },
          "tick_rule": {
            "description": "fixed: one tick size for every contract; contract_dependent: the tradable increment depends on the contract.",
            "enum": [
              "fixed",
              "contract_dependent"
            ],
            "type": "string"
          },
          "tick_size": {
            "description": "Minimum price increment of the canonical price unit.",
            "type": "number"
          },
          "trading_hours": {
            "description": "Configured weekly trading pattern (Eastern Time).",
            "type": "string"
          }
        },
        "required": [
          "category",
          "currency",
          "exchange",
          "front_contract",
          "name",
          "point_value",
          "price_precision",
          "quote_unit",
          "status",
          "symbol",
          "tick_notes",
          "tick_rule",
          "tick_size",
          "trading_hours"
        ],
        "type": "object"
      },
      "FuturesQuotesRow": {
        "additionalProperties": false,
        "description": "One top-of-book sample.",
        "properties": {
          "ask_price": {
            "description": "Best ask.",
            "type": "number"
          },
          "ask_size": {
            "description": "Size at the best ask.",
            "type": "integer"
          },
          "bid_price": {
            "description": "Best bid.",
            "type": "number"
          },
          "bid_size": {
            "description": "Size at the best bid.",
            "type": "integer"
          },
          "contract": {
            "description": "Dated contract.",
            "type": "string"
          },
          "id": {
            "description": "Stable identifier of the sample; unique within a contract.",
            "type": "string"
          },
          "timestamp": {
            "description": "Time the quote was captured. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          }
        },
        "required": [
          "ask_price",
          "ask_size",
          "bid_price",
          "bid_size",
          "contract",
          "id",
          "timestamp"
        ],
        "type": "object"
      },
      "FuturesSessionProfileRow": {
        "additionalProperties": false,
        "description": "The volume profile of a trading session.",
        "properties": {
          "contract": {
            "description": "Dated contract.",
            "type": "string"
          },
          "end_time": {
            "description": "End of the session. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "levels": {
            "description": "Volume by price, lowest price first.",
            "items": {
              "additionalProperties": false,
              "description": "Volume traded at one price row.",
              "properties": {
                "buy_volume": {
                  "description": "Aggressive buy contracts.",
                  "type": "integer"
                },
                "delta": {
                  "description": "Buy minus sell contracts.",
                  "type": "integer"
                },
                "in_value_area": {
                  "description": "The row is inside the value area.",
                  "type": "boolean"
                },
                "is_poc": {
                  "description": "The row is the point of control.",
                  "type": "boolean"
                },
                "price": {
                  "description": "Price (lowest price of the row when grouped).",
                  "type": "number"
                },
                "price_ticks": {
                  "description": "Price as an integer count of ticks, as a string.",
                  "type": "string"
                },
                "sell_volume": {
                  "description": "Aggressive sell contracts.",
                  "type": "integer"
                },
                "total_volume": {
                  "description": "All contracts at the row.",
                  "type": "integer"
                },
                "trade_count": {
                  "description": "Prints at the row.",
                  "type": "integer"
                },
                "unknown_volume": {
                  "description": "Contracts whose side is unknown.",
                  "type": "integer"
                }
              },
              "required": [
                "buy_volume",
                "delta",
                "in_value_area",
                "is_poc",
                "price",
                "price_ticks",
                "sell_volume",
                "total_volume",
                "trade_count",
                "unknown_volume"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "poc": {
            "description": "Point of control: the price with the most volume (the lowest on a tie).",
            "type": [
              "number",
              "null"
            ]
          },
          "row_ticks": {
            "description": "Ticks per price row.",
            "type": "integer"
          },
          "start_time": {
            "description": "Start of the session. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "tick_size": {
            "description": "Minimum price increment.",
            "type": "number"
          },
          "total_volume": {
            "description": "Contracts in the profile.",
            "type": "integer"
          },
          "trading_date": {
            "description": "Trading date of the session.",
            "format": "date",
            "type": "string"
          },
          "value_area_high": {
            "description": "Upper edge of the value area.",
            "type": [
              "number",
              "null"
            ]
          },
          "value_area_low": {
            "description": "Lower edge of the value area.",
            "type": [
              "number",
              "null"
            ]
          },
          "value_area_pct": {
            "description": "Share of the volume the value area is built to contain, in percent.",
            "type": "number"
          },
          "value_area_volume": {
            "description": "Contracts inside the value area.",
            "type": "integer"
          }
        },
        "required": [
          "contract",
          "end_time",
          "levels",
          "poc",
          "row_ticks",
          "start_time",
          "tick_size",
          "total_volume",
          "trading_date",
          "value_area_high",
          "value_area_low",
          "value_area_pct",
          "value_area_volume"
        ],
        "type": "object"
      },
      "FuturesSessionsRow": {
        "additionalProperties": false,
        "description": "One session window.",
        "properties": {
          "end_time": {
            "description": "End of the session (exclusive). Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "session": {
            "description": "Session name.",
            "enum": [
              "rth",
              "gth",
              "curb",
              "globex"
            ],
            "type": "string"
          },
          "start_time": {
            "description": "Start of the session (inclusive). Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "trading_date": {
            "description": "Trading date of the session.",
            "format": "date",
            "type": "string"
          }
        },
        "required": [
          "end_time",
          "session",
          "start_time",
          "trading_date"
        ],
        "type": "object"
      },
      "FuturesSignalsRow": {
        "additionalProperties": false,
        "description": "One burst of aggressive trading.",
        "properties": {
          "baseline_available": {
            "description": "A baseline was observed for comparison.",
            "type": "boolean"
          },
          "baseline_rate": {
            "description": "Recent baseline rate the burst is compared with.",
            "type": "number"
          },
          "classification": {
            "description": "sustained_buy_aggression or sustained_sell_aggression.",
            "type": "string"
          },
          "contract": {
            "description": "Dated contract.",
            "type": "string"
          },
          "contracts_per_second": {
            "description": "Contracts per second.",
            "type": "number"
          },
          "end_time": {
            "description": "Last print of the burst. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "execution_count": {
            "description": "Prints in the burst.",
            "type": "integer"
          },
          "execution_rate": {
            "description": "Prints per second.",
            "type": "number"
          },
          "id": {
            "description": "Identifier of the signal.",
            "type": "string"
          },
          "levels": {
            "description": "Contribution of each price to the burst.",
            "items": {
              "additionalProperties": false,
              "description": "A price's contribution to the burst.",
              "properties": {
                "buy_volume": {
                  "description": "Aggressive buy contracts.",
                  "type": "integer"
                },
                "execution_count": {
                  "description": "Prints at the price.",
                  "type": "integer"
                },
                "price": {
                  "description": "Price.",
                  "type": "number"
                },
                "price_ticks": {
                  "description": "Price as an integer count of ticks, as a string.",
                  "type": "string"
                },
                "sell_volume": {
                  "description": "Aggressive sell contracts.",
                  "type": "integer"
                },
                "total_volume": {
                  "description": "All contracts at the price.",
                  "type": "integer"
                },
                "unknown_volume": {
                  "description": "Contracts whose side is unknown.",
                  "type": "integer"
                }
              },
              "required": [
                "buy_volume",
                "execution_count",
                "price",
                "price_ticks",
                "sell_volume",
                "total_volume",
                "unknown_volume"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "price": {
            "description": "Price of the first print.",
            "type": "number"
          },
          "price_max": {
            "description": "Highest price of the burst.",
            "type": "number"
          },
          "price_min": {
            "description": "Lowest price of the burst.",
            "type": "number"
          },
          "price_ticks": {
            "description": "price as an integer count of ticks, as a string.",
            "type": "string"
          },
          "quality": {
            "description": "captured when the input is complete, captured_partial otherwise.",
            "enum": [
              "captured",
              "captured_partial",
              "fixture"
            ],
            "type": "string"
          },
          "side": {
            "description": "Aggressor side of the burst.",
            "enum": [
              "buy",
              "sell"
            ],
            "type": "string"
          },
          "side_dominance": {
            "description": "Share of the burst's volume on the aggressor side.",
            "type": "number"
          },
          "size": {
            "description": "Contracts in the burst.",
            "type": "integer"
          },
          "start_time": {
            "description": "First print of the burst. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "state": {
            "description": "active while the burst may still grow, completed once it ended.",
            "enum": [
              "active",
              "completed"
            ],
            "type": "string"
          },
          "velocity_multiple": {
            "description": "execution_rate divided by baseline_rate.",
            "type": [
              "number",
              "null"
            ]
          },
          "vwap": {
            "description": "Volume-weighted average price of the burst.",
            "type": "number"
          }
        },
        "required": [
          "baseline_available",
          "baseline_rate",
          "classification",
          "contract",
          "contracts_per_second",
          "end_time",
          "execution_count",
          "execution_rate",
          "id",
          "levels",
          "price",
          "price_max",
          "price_min",
          "price_ticks",
          "quality",
          "side",
          "side_dominance",
          "size",
          "start_time",
          "state",
          "velocity_multiple",
          "vwap"
        ],
        "type": "object"
      },
      "FuturesSnapshotRow": {
        "additionalProperties": false,
        "description": "The state of one contract.",
        "properties": {
          "ask_price": {
            "description": "Best ask.",
            "type": [
              "number",
              "null"
            ]
          },
          "ask_size": {
            "description": "Size at the best ask.",
            "type": [
              "integer",
              "null"
            ]
          },
          "bid_price": {
            "description": "Best bid.",
            "type": [
              "number",
              "null"
            ]
          },
          "bid_size": {
            "description": "Size at the best bid.",
            "type": [
              "integer",
              "null"
            ]
          },
          "contract": {
            "description": "Dated contract.",
            "type": "string"
          },
          "exchange": {
            "description": "Listing exchange.",
            "enum": [
              "cme",
              "cbot",
              "nymex",
              "comex"
            ],
            "type": "string"
          },
          "last_price": {
            "description": "Price of the last print.",
            "type": [
              "number",
              "null"
            ]
          },
          "last_side": {
            "description": "Aggressor side of the last print.",
            "enum": [
              "buy",
              "sell",
              "unknown",
              null
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "last_size": {
            "description": "Contracts in the last print.",
            "type": [
              "integer",
              "null"
            ]
          },
          "last_timestamp": {
            "description": "Time of the last print. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": [
              "integer",
              "null"
            ]
          },
          "quote_timestamp": {
            "description": "Time the quote was captured. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": [
              "integer",
              "null"
            ]
          },
          "session_close": {
            "description": "Close of the latest one-minute bar of the session.",
            "type": [
              "number",
              "null"
            ]
          },
          "session_high": {
            "description": "Session high.",
            "type": [
              "number",
              "null"
            ]
          },
          "session_low": {
            "description": "Session low.",
            "type": [
              "number",
              "null"
            ]
          },
          "session_open": {
            "description": "Session open (first one-minute bar).",
            "type": [
              "number",
              "null"
            ]
          },
          "session_start_time": {
            "description": "Start of the current session. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "session_volume": {
            "description": "Contracts traded this session.",
            "type": [
              "integer",
              "null"
            ]
          },
          "symbol": {
            "description": "Product root.",
            "type": "string"
          },
          "tick_size": {
            "description": "Minimum price increment.",
            "type": "number"
          }
        },
        "required": [
          "ask_price",
          "ask_size",
          "bid_price",
          "bid_size",
          "contract",
          "exchange",
          "last_price",
          "last_side",
          "last_size",
          "last_timestamp",
          "quote_timestamp",
          "session_close",
          "session_high",
          "session_low",
          "session_open",
          "session_start_time",
          "session_volume",
          "symbol",
          "tick_size"
        ],
        "type": "object"
      },
      "FuturesTradesRow": {
        "additionalProperties": false,
        "description": "One retained print.",
        "properties": {
          "contract": {
            "description": "Dated contract.",
            "type": "string"
          },
          "id": {
            "description": "Stable identifier of the print; unique within a contract.",
            "type": "string"
          },
          "price": {
            "description": "Price.",
            "type": "number"
          },
          "price_ticks": {
            "description": "Price as an integer count of ticks, as a string (it can exceed 2^53 for fine-tick products).",
            "type": "string"
          },
          "side": {
            "description": "Aggressor side; unknown when it could not be determined.",
            "enum": [
              "buy",
              "sell",
              "unknown"
            ],
            "type": "string"
          },
          "size": {
            "description": "Contracts.",
            "type": "integer"
          },
          "timestamp": {
            "description": "Time of the print. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          }
        },
        "required": [
          "contract",
          "id",
          "price",
          "price_ticks",
          "side",
          "size",
          "timestamp"
        ],
        "type": "object"
      },
      "FuturesVolumeProfileRow": {
        "additionalProperties": false,
        "description": "The volume profile of a window.",
        "properties": {
          "contract": {
            "description": "Dated contract.",
            "type": "string"
          },
          "levels": {
            "description": "Volume by price, lowest price first.",
            "items": {
              "additionalProperties": false,
              "description": "Volume traded at one price row.",
              "properties": {
                "buy_volume": {
                  "description": "Aggressive buy contracts.",
                  "type": "integer"
                },
                "delta": {
                  "description": "Buy minus sell contracts.",
                  "type": "integer"
                },
                "in_value_area": {
                  "description": "The row is inside the value area.",
                  "type": "boolean"
                },
                "is_poc": {
                  "description": "The row is the point of control.",
                  "type": "boolean"
                },
                "price": {
                  "description": "Price (lowest price of the row when grouped).",
                  "type": "number"
                },
                "price_ticks": {
                  "description": "Price as an integer count of ticks, as a string.",
                  "type": "string"
                },
                "sell_volume": {
                  "description": "Aggressive sell contracts.",
                  "type": "integer"
                },
                "total_volume": {
                  "description": "All contracts at the row.",
                  "type": "integer"
                },
                "trade_count": {
                  "description": "Prints at the row.",
                  "type": "integer"
                },
                "unknown_volume": {
                  "description": "Contracts whose side is unknown.",
                  "type": "integer"
                }
              },
              "required": [
                "buy_volume",
                "delta",
                "in_value_area",
                "is_poc",
                "price",
                "price_ticks",
                "sell_volume",
                "total_volume",
                "trade_count",
                "unknown_volume"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "poc": {
            "description": "Point of control: the price with the most volume (the lowest on a tie).",
            "type": [
              "number",
              "null"
            ]
          },
          "row_ticks": {
            "description": "Ticks per price row.",
            "type": "integer"
          },
          "tick_size": {
            "description": "Minimum price increment.",
            "type": "number"
          },
          "total_volume": {
            "description": "Contracts in the profile.",
            "type": "integer"
          },
          "value_area_high": {
            "description": "Upper edge of the value area.",
            "type": [
              "number",
              "null"
            ]
          },
          "value_area_low": {
            "description": "Lower edge of the value area.",
            "type": [
              "number",
              "null"
            ]
          },
          "value_area_pct": {
            "description": "Share of the volume the value area is built to contain, in percent.",
            "type": "number"
          },
          "value_area_volume": {
            "description": "Contracts inside the value area.",
            "type": "integer"
          }
        },
        "required": [
          "contract",
          "levels",
          "poc",
          "row_ticks",
          "tick_size",
          "total_volume",
          "value_area_high",
          "value_area_low",
          "value_area_pct",
          "value_area_volume"
        ],
        "type": "object"
      },
      "IndicesBarsRow": {
        "additionalProperties": false,
        "description": "One bar.",
        "properties": {
          "close": {
            "description": "Close.",
            "type": "number"
          },
          "high": {
            "description": "High.",
            "type": "number"
          },
          "low": {
            "description": "Low.",
            "type": "number"
          },
          "open": {
            "description": "Open.",
            "type": "number"
          },
          "start_time": {
            "description": "Start of the bar. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "symbol": {
            "description": "Index symbol.",
            "type": "string"
          }
        },
        "required": [
          "close",
          "high",
          "low",
          "open",
          "start_time",
          "symbol"
        ],
        "type": "object"
      },
      "IndicesBasisRow": {
        "additionalProperties": false,
        "description": "One bar of the basis series.",
        "properties": {
          "basis": {
            "description": "Futures minus index, in index points.",
            "type": "number"
          },
          "complete": {
            "description": "The bar has closed and all of its futures minutes were received.",
            "type": "boolean"
          },
          "contract": {
            "description": "Futures contract used.",
            "type": "string"
          },
          "days_to_settlement": {
            "description": "Days from the bar close to final settlement.",
            "type": "number"
          },
          "dividend_yield": {
            "description": "Continuous annual dividend yield used.",
            "type": "number"
          },
          "fair_basis": {
            "description": "Fair value minus index, in index points.",
            "type": "number"
          },
          "fair_value": {
            "description": "Theoretical futures price: index x e^(r-q)T.",
            "type": "number"
          },
          "futures_price": {
            "description": "Futures close of the bar.",
            "type": "number"
          },
          "implied_index_price": {
            "description": "Index level implied by the futures price: futures x e^-(r-q)T.",
            "type": "number"
          },
          "index_minus_implied": {
            "description": "Index minus implied index, in index points.",
            "type": "number"
          },
          "index_price": {
            "description": "Index value at the bar close.",
            "type": "number"
          },
          "premium": {
            "description": "Futures minus fair value, in index points.",
            "type": "number"
          },
          "premium_bps": {
            "description": "Premium in basis points of the index.",
            "type": "number"
          },
          "risk_free_rate": {
            "description": "Continuously compounded annual risk-free rate used.",
            "type": "number"
          },
          "start_time": {
            "description": "Start of the bar. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "state": {
            "description": "Where the index stands against the implied index.",
            "enum": [
              "index_above_implied",
              "index_below_implied",
              "at_fair"
            ],
            "type": "string"
          },
          "symbol": {
            "description": "Index symbol.",
            "type": "string"
          }
        },
        "required": [
          "basis",
          "complete",
          "contract",
          "days_to_settlement",
          "dividend_yield",
          "fair_basis",
          "fair_value",
          "futures_price",
          "implied_index_price",
          "index_minus_implied",
          "index_price",
          "premium",
          "premium_bps",
          "risk_free_rate",
          "start_time",
          "state",
          "symbol"
        ],
        "type": "object"
      },
      "IndicesBasisSnapshotRow": {
        "additionalProperties": false,
        "description": "The live basis of one index.",
        "properties": {
          "available": {
            "description": "The comparison could be computed now.",
            "type": "boolean"
          },
          "basis": {
            "description": "Futures minus index, in index points.",
            "type": [
              "number",
              "null"
            ]
          },
          "contract": {
            "description": "Futures contract used.",
            "type": [
              "string",
              "null"
            ]
          },
          "days_to_settlement": {
            "description": "Days to final settlement.",
            "type": [
              "number",
              "null"
            ]
          },
          "dividend_yield": {
            "description": "Continuous annual dividend yield used.",
            "type": [
              "number",
              "null"
            ]
          },
          "fair_basis": {
            "description": "Fair value minus index, in index points.",
            "type": [
              "number",
              "null"
            ]
          },
          "fair_value": {
            "description": "Theoretical futures price: index x e^(r-q)T.",
            "type": [
              "number",
              "null"
            ]
          },
          "futures_ask": {
            "description": "Best ask, when a fresh quote exists.",
            "type": [
              "number",
              "null"
            ]
          },
          "futures_bid": {
            "description": "Best bid, when a fresh quote exists.",
            "type": [
              "number",
              "null"
            ]
          },
          "futures_last": {
            "description": "Last print, when a fresh one exists.",
            "type": [
              "number",
              "null"
            ]
          },
          "futures_price": {
            "description": "Futures price used.",
            "type": [
              "number",
              "null"
            ]
          },
          "futures_price_type": {
            "description": "mid: midpoint of the best bid and ask; last: last print.",
            "enum": [
              "mid",
              "last",
              null
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "futures_timestamp": {
            "description": "Time of the futures price. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": [
              "integer",
              "null"
            ]
          },
          "implied_index_price": {
            "description": "Index level implied by the futures price.",
            "type": [
              "number",
              "null"
            ]
          },
          "index_minus_implied": {
            "description": "Index minus implied index, in index points.",
            "type": [
              "number",
              "null"
            ]
          },
          "index_price": {
            "description": "Latest index value.",
            "type": [
              "number",
              "null"
            ]
          },
          "index_timestamp": {
            "description": "Time of the index value. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": [
              "integer",
              "null"
            ]
          },
          "premium": {
            "description": "Futures minus fair value, in index points.",
            "type": [
              "number",
              "null"
            ]
          },
          "premium_bps": {
            "description": "Premium in basis points of the index.",
            "type": [
              "number",
              "null"
            ]
          },
          "reason": {
            "description": "Why it could not, when available is false.",
            "enum": [
              "index_not_live",
              "futures_stale",
              "futures_unavailable",
              "futures_not_entitled",
              "rate_unavailable",
              "invalid_prices",
              null
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "risk_free_rate": {
            "description": "Continuously compounded annual risk-free rate used.",
            "type": [
              "number",
              "null"
            ]
          },
          "settlement_time": {
            "description": "Final settlement of the contract. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": [
              "integer",
              "null"
            ]
          },
          "state": {
            "description": "Where the index stands against the implied index.",
            "enum": [
              "index_above_implied",
              "index_below_implied",
              "at_fair",
              null
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "symbol": {
            "description": "Index symbol.",
            "type": "string"
          },
          "timestamp": {
            "description": "Time of the evaluation. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          }
        },
        "required": [
          "available",
          "basis",
          "contract",
          "days_to_settlement",
          "dividend_yield",
          "fair_basis",
          "fair_value",
          "futures_ask",
          "futures_bid",
          "futures_last",
          "futures_price",
          "futures_price_type",
          "futures_timestamp",
          "implied_index_price",
          "index_minus_implied",
          "index_price",
          "index_timestamp",
          "premium",
          "premium_bps",
          "reason",
          "risk_free_rate",
          "settlement_time",
          "state",
          "symbol",
          "timestamp"
        ],
        "type": "object"
      },
      "IndicesImpliedPriceRow": {
        "additionalProperties": false,
        "description": "One bar of the implied index series.",
        "properties": {
          "complete": {
            "description": "The bar has closed and its futures minutes were all received.",
            "type": "boolean"
          },
          "contract": {
            "description": "Futures contract used.",
            "type": "string"
          },
          "days_to_settlement": {
            "description": "Days from the bar close to the contract's final settlement.",
            "type": "number"
          },
          "dividend_yield": {
            "description": "Continuous annual dividend yield used.",
            "type": "number"
          },
          "fair_value_implied_price": {
            "description": "Futures price carried back to the index by cost of carry.",
            "type": "number"
          },
          "futures_price": {
            "description": "Futures close of the bar.",
            "type": "number"
          },
          "implied_price": {
            "description": "Close-offset implied index (SPX and NDX only).",
            "type": [
              "number",
              "null"
            ]
          },
          "index_price": {
            "description": "Official index value at the bar close, null outside the cash session.",
            "type": [
              "number",
              "null"
            ]
          },
          "risk_free_rate": {
            "description": "Continuously compounded annual risk-free rate used.",
            "type": "number"
          },
          "start_time": {
            "description": "Start of the bar. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "symbol": {
            "description": "Index symbol.",
            "type": "string"
          }
        },
        "required": [
          "complete",
          "contract",
          "days_to_settlement",
          "dividend_yield",
          "fair_value_implied_price",
          "futures_price",
          "implied_price",
          "index_price",
          "risk_free_rate",
          "start_time",
          "symbol"
        ],
        "type": "object"
      },
      "IndicesIndicatorsEmaRow": {
        "additionalProperties": false,
        "description": "One indicator value.",
        "properties": {
          "timestamp": {
            "description": "Time the value applies to (the start of its bar). Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "value": {
            "description": "Indicator value.",
            "type": "number"
          }
        },
        "required": [
          "timestamp",
          "value"
        ],
        "type": "object"
      },
      "IndicesIndicatorsMacdRow": {
        "additionalProperties": false,
        "description": "One indicator value.",
        "properties": {
          "histogram": {
            "description": "MACD minus signal.",
            "type": "number"
          },
          "signal": {
            "description": "Signal line.",
            "type": "number"
          },
          "timestamp": {
            "description": "Time the value applies to (the start of its bar). Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "value": {
            "description": "MACD line: short minus long exponential average.",
            "type": "number"
          }
        },
        "required": [
          "histogram",
          "signal",
          "timestamp",
          "value"
        ],
        "type": "object"
      },
      "IndicesIndicatorsRsiRow": {
        "additionalProperties": false,
        "description": "One indicator value.",
        "properties": {
          "timestamp": {
            "description": "Time the value applies to (the start of its bar). Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "value": {
            "description": "Indicator value.",
            "type": "number"
          }
        },
        "required": [
          "timestamp",
          "value"
        ],
        "type": "object"
      },
      "IndicesIndicatorsSmaRow": {
        "additionalProperties": false,
        "description": "One indicator value.",
        "properties": {
          "timestamp": {
            "description": "Time the value applies to (the start of its bar). Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "value": {
            "description": "Indicator value.",
            "type": "number"
          }
        },
        "required": [
          "timestamp",
          "value"
        ],
        "type": "object"
      },
      "IndicesListRow": {
        "additionalProperties": false,
        "description": "One index.",
        "properties": {
          "basis_supported": {
            "description": "The basis routes accept the index.",
            "type": "boolean"
          },
          "category": {
            "description": "Kind of index.",
            "enum": [
              "equity",
              "volatility"
            ],
            "type": "string"
          },
          "futures_roots": {
            "description": "Futures products that settle on the index; empty when none is configured.",
            "items": {
              "description": "Futures root.",
              "type": "string"
            },
            "type": "array"
          },
          "name": {
            "description": "Index name.",
            "type": "string"
          },
          "symbol": {
            "description": "Index symbol.",
            "type": "string"
          }
        },
        "required": [
          "basis_supported",
          "category",
          "futures_roots",
          "name",
          "symbol"
        ],
        "type": "object"
      },
      "IndicesPreviousCloseRow": {
        "additionalProperties": false,
        "description": "The previous trading day's bar.",
        "properties": {
          "close": {
            "description": "Close (the previous close).",
            "type": "number"
          },
          "date": {
            "description": "Trading date of the bar.",
            "format": "date",
            "type": "string"
          },
          "high": {
            "description": "High.",
            "type": "number"
          },
          "low": {
            "description": "Low.",
            "type": "number"
          },
          "open": {
            "description": "Open.",
            "type": "number"
          },
          "start_time": {
            "description": "Start of the daily bar. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "symbol": {
            "description": "Index symbol.",
            "type": "string"
          }
        },
        "required": [
          "close",
          "date",
          "high",
          "low",
          "open",
          "start_time",
          "symbol"
        ],
        "type": "object"
      },
      "IndicesSnapshotRow": {
        "additionalProperties": false,
        "description": "The state of one index.",
        "properties": {
          "change": {
            "description": "Change from the previous close.",
            "type": [
              "number",
              "null"
            ]
          },
          "change_percent": {
            "description": "Percent change from the previous close.",
            "type": [
              "number",
              "null"
            ]
          },
          "high": {
            "description": "Session high.",
            "type": [
              "number",
              "null"
            ]
          },
          "low": {
            "description": "Session low.",
            "type": [
              "number",
              "null"
            ]
          },
          "market_status": {
            "description": "State of the index's session.",
            "enum": [
              "open",
              "closed",
              "pre_market",
              "after_hours",
              null
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "name": {
            "description": "Index name.",
            "type": [
              "string",
              "null"
            ]
          },
          "open": {
            "description": "Session open.",
            "type": [
              "number",
              "null"
            ]
          },
          "previous_close": {
            "description": "Previous close.",
            "type": [
              "number",
              "null"
            ]
          },
          "symbol": {
            "description": "Index symbol.",
            "type": "string"
          },
          "timestamp": {
            "description": "Time of the value. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "value": {
            "description": "Latest index value.",
            "type": "number"
          }
        },
        "required": [
          "change",
          "change_percent",
          "high",
          "low",
          "market_status",
          "name",
          "open",
          "previous_close",
          "symbol",
          "timestamp",
          "value"
        ],
        "type": "object"
      },
      "MarketCalendarRow": {
        "additionalProperties": false,
        "description": "The schedule of one date.",
        "properties": {
          "close_timestamp": {
            "description": "Closing time of the equity market. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": [
              "integer",
              "null"
            ]
          },
          "date": {
            "description": "The date asked for.",
            "format": "date",
            "type": "string"
          },
          "open_timestamp": {
            "description": "Opening time of the equity market. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": [
              "integer",
              "null"
            ]
          },
          "status": {
            "description": "open: a regular day; early_close: closes before 16:00 ET; closed: a weekend or holiday.",
            "enum": [
              "open",
              "early_close",
              "closed"
            ],
            "type": "string"
          }
        },
        "required": [
          "date",
          "status",
          "open_timestamp",
          "close_timestamp"
        ],
        "type": "object"
      },
      "MarketHolidaysRow": {
        "additionalProperties": false,
        "description": "One closure.",
        "properties": {
          "close_time": {
            "description": "Closing time on an early-close day. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": [
              "integer",
              "null"
            ]
          },
          "date": {
            "description": "Date.",
            "format": "date",
            "type": "string"
          },
          "exchange": {
            "description": "Exchange, for example NYSE or NASDAQ.",
            "type": "string"
          },
          "name": {
            "description": "Holiday name.",
            "type": "string"
          },
          "open_time": {
            "description": "Opening time on an early-close day. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": [
              "integer",
              "null"
            ]
          },
          "status": {
            "description": "Closed all day or closing early.",
            "enum": [
              "closed",
              "early_close"
            ],
            "type": "string"
          }
        },
        "required": [
          "date",
          "exchange",
          "name",
          "status",
          "open_time",
          "close_time"
        ],
        "type": "object"
      },
      "MarketInterestRatesRow": {
        "additionalProperties": false,
        "description": "The rate of one date.",
        "properties": {
          "date": {
            "description": "Publication date.",
            "format": "date",
            "type": "string"
          },
          "rate_percent": {
            "description": "The rate in percent (4.31 = 4.31%).",
            "type": "number"
          },
          "rate_type": {
            "description": "The rate.",
            "enum": [
              "sofr"
            ],
            "type": "string"
          }
        },
        "required": [
          "date",
          "rate_type",
          "rate_percent"
        ],
        "type": "object"
      },
      "MarketOverviewRow": {
        "additionalProperties": false,
        "description": "The market overview.",
        "properties": {
          "breadth": {
            "additionalProperties": false,
            "description": "Market breadth of the latest completed session.",
            "properties": {
              "advance_decline_ratio": {
                "description": "Advancers divided by decliners.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "advancers": {
                "description": "Stocks that closed higher.",
                "type": "integer"
              },
              "advancing_volume": {
                "description": "Shares traded in advancing stocks.",
                "type": "number"
              },
              "date": {
                "description": "Session date.",
                "format": "date",
                "type": "string"
              },
              "decliners": {
                "description": "Stocks that closed lower.",
                "type": "integer"
              },
              "declining_volume": {
                "description": "Shares traded in declining stocks.",
                "type": "number"
              },
              "total": {
                "description": "Stocks compared.",
                "type": "integer"
              },
              "total_volume": {
                "description": "Shares traded in all compared stocks.",
                "type": "number"
              },
              "unchanged": {
                "description": "Stocks that closed unchanged.",
                "type": "integer"
              }
            },
            "required": [
              "date",
              "advancers",
              "decliners",
              "unchanged",
              "total",
              "advancing_volume",
              "declining_volume",
              "total_volume",
              "advance_decline_ratio"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "futures": {
            "description": "Front contracts of the equity index futures.",
            "items": {
              "additionalProperties": false,
              "description": "One future.",
              "properties": {
                "change": {
                  "description": "Change against the previous session close, in points.",
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "change_percent": {
                  "description": "Change as a percentage.",
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "contract": {
                  "description": "Front contract, for example ESZ6.",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "price": {
                  "description": "Latest price.",
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "symbol": {
                  "description": "Product root.",
                  "type": "string"
                },
                "timestamp": {
                  "description": "Time of the price. Unix epoch milliseconds (UTC).",
                  "format": "unix-ms",
                  "type": [
                    "integer",
                    "null"
                  ]
                }
              },
              "required": [
                "symbol",
                "contract",
                "price",
                "change",
                "change_percent",
                "timestamp"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "indices": {
            "description": "Major index values.",
            "items": {
              "additionalProperties": false,
              "description": "One index.",
              "properties": {
                "change": {
                  "description": "Change against the previous close, in index points.",
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "change_percent": {
                  "description": "Change as a percentage.",
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "name": {
                  "description": "Index name.",
                  "type": "string"
                },
                "symbol": {
                  "description": "Index symbol.",
                  "type": "string"
                },
                "timestamp": {
                  "description": "Time of the value. Unix epoch milliseconds (UTC).",
                  "format": "unix-ms",
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "value": {
                  "description": "Latest value.",
                  "type": [
                    "number",
                    "null"
                  ]
                }
              },
              "required": [
                "symbol",
                "name",
                "value",
                "change",
                "change_percent",
                "timestamp"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "volatility": {
            "additionalProperties": false,
            "description": "The VIX volatility index.",
            "properties": {
              "change": {
                "description": "Change against the previous close, in index points.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "change_percent": {
                "description": "Change as a percentage.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "name": {
                "description": "Index name.",
                "type": "string"
              },
              "symbol": {
                "description": "Index symbol.",
                "type": "string"
              },
              "timestamp": {
                "description": "Time of the value. Unix epoch milliseconds (UTC).",
                "format": "unix-ms",
                "type": [
                  "integer",
                  "null"
                ]
              },
              "value": {
                "description": "Latest value.",
                "type": [
                  "number",
                  "null"
                ]
              }
            },
            "required": [
              "symbol",
              "name",
              "value",
              "change",
              "change_percent",
              "timestamp"
            ],
            "type": [
              "object",
              "null"
            ]
          }
        },
        "required": [
          "indices",
          "volatility",
          "futures",
          "breadth"
        ],
        "type": "object"
      },
      "MarketSessionsRow": {
        "additionalProperties": false,
        "description": "One session.",
        "properties": {
          "asset": {
            "description": "Asset class.",
            "enum": [
              "stocks",
              "options",
              "futures"
            ],
            "type": "string"
          },
          "end_time": {
            "description": "End of the session. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "session": {
            "description": "Session name: pre_market, regular, after_hours, overnight, curb or globex.",
            "type": "string"
          },
          "start_time": {
            "description": "Start of the session. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "status": {
            "description": "A normal day or an early close.",
            "enum": [
              "regular",
              "early_close"
            ],
            "type": "string"
          },
          "trading_date": {
            "description": "Trading date.",
            "format": "date",
            "type": "string"
          }
        },
        "required": [
          "asset",
          "session",
          "trading_date",
          "start_time",
          "end_time",
          "status"
        ],
        "type": "object"
      },
      "MarketStatusRow": {
        "additionalProperties": false,
        "description": "Market state.",
        "properties": {
          "after_hours": {
            "description": "After-hours trading is in session.",
            "type": [
              "boolean",
              "null"
            ]
          },
          "components": {
            "description": "Health of the data areas.",
            "items": {
              "additionalProperties": false,
              "description": "One data area.",
              "properties": {
                "name": {
                  "description": "Data area.",
                  "enum": [
                    "options",
                    "futures",
                    "stocks",
                    "indices"
                  ],
                  "type": "string"
                },
                "status": {
                  "description": "Health.",
                  "enum": [
                    "operational",
                    "degraded",
                    "outage"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "name",
                "status"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "early_hours": {
            "description": "Pre-market trading is in session.",
            "type": [
              "boolean",
              "null"
            ]
          },
          "exchanges": {
            "additionalProperties": false,
            "description": "State of the venue groups.",
            "properties": {
              "nasdaq": {
                "description": "Nasdaq state.",
                "enum": [
                  "open",
                  "closed",
                  "extended_hours",
                  null
                ],
                "type": [
                  "string",
                  "null"
                ]
              },
              "nyse": {
                "description": "NYSE state.",
                "enum": [
                  "open",
                  "closed",
                  "extended_hours",
                  null
                ],
                "type": [
                  "string",
                  "null"
                ]
              },
              "otc": {
                "description": "OTC markets state.",
                "enum": [
                  "open",
                  "closed",
                  "extended_hours",
                  null
                ],
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "nasdaq",
              "nyse",
              "otc"
            ],
            "type": "object"
          },
          "market": {
            "description": "US equity market state.",
            "enum": [
              "open",
              "closed",
              "extended_hours",
              null
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "server_time": {
            "description": "Time of the state. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": [
              "integer",
              "null"
            ]
          }
        },
        "required": [
          "market",
          "early_hours",
          "after_hours",
          "exchanges",
          "server_time",
          "components"
        ],
        "type": "object"
      },
      "Meta": {
        "properties": {
          "as_of": {
            "description": "Time the data is valid for. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "coverage": {
            "additionalProperties": true,
            "description": "Completeness of the data; complete is false when a range is partially covered.",
            "type": "object"
          },
          "delay_ms": {
            "description": "Data delay in milliseconds; 0 when real time.",
            "type": "integer"
          },
          "delayed": {
            "type": "boolean"
          },
          "request_id": {
            "type": "string"
          },
          "session": {
            "type": "string"
          },
          "source": {
            "description": "Venue or feed the data comes from. fixture appears only in development environments.",
            "enum": [
              "opra",
              "cme",
              "cbot",
              "nymex",
              "comex",
              "sip",
              "finra_trf",
              "index_feed",
              "derived",
              "fixture"
            ],
            "type": "string"
          },
          "trading_date": {
            "format": "date",
            "type": "string"
          },
          "warnings": {
            "items": {
              "type": "string"
            },
            "type": "array"
          }
        },
        "required": [
          "request_id",
          "as_of",
          "delayed",
          "delay_ms",
          "coverage"
        ],
        "type": "object"
      },
      "NewsArticlesRow": {
        "additionalProperties": false,
        "description": "One article.",
        "properties": {
          "author": {
            "description": "Author.",
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "description": "Summary of the article.",
            "type": [
              "string",
              "null"
            ]
          },
          "id": {
            "description": "Article id.",
            "type": "string"
          },
          "image_url": {
            "description": "Link to the article image.",
            "type": [
              "string",
              "null"
            ]
          },
          "insights": {
            "description": "Sentiment per ticker.",
            "items": {
              "additionalProperties": false,
              "description": "One insight.",
              "properties": {
                "reasoning": {
                  "description": "Why the article carries this sentiment.",
                  "type": "string"
                },
                "sentiment": {
                  "description": "Sentiment.",
                  "enum": [
                    "positive",
                    "neutral",
                    "negative"
                  ],
                  "type": "string"
                },
                "symbol": {
                  "description": "Ticker symbol.",
                  "type": "string"
                }
              },
              "required": [
                "symbol",
                "sentiment",
                "reasoning"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "keywords": {
            "description": "Keywords.",
            "items": {
              "description": "Keyword.",
              "type": "string"
            },
            "type": "array"
          },
          "publisher": {
            "additionalProperties": false,
            "description": "The publishing outlet.",
            "properties": {
              "homepage_url": {
                "description": "Outlet website.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "name": {
                "description": "Outlet name.",
                "type": "string"
              }
            },
            "required": [
              "name",
              "homepage_url"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "symbols": {
            "description": "Tickers the article mentions.",
            "items": {
              "description": "Ticker symbol.",
              "type": "string"
            },
            "type": "array"
          },
          "timestamp": {
            "description": "Publication time. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "title": {
            "description": "Headline.",
            "type": "string"
          },
          "url": {
            "description": "Link to the article at the publisher.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "id",
          "title",
          "author",
          "description",
          "url",
          "image_url",
          "timestamp",
          "publisher",
          "symbols",
          "keywords",
          "insights"
        ],
        "type": "object"
      },
      "OptionsChainEodRow": {
        "additionalProperties": false,
        "description": "End-of-day record of one contract.",
        "properties": {
          "ask": {
            "description": "Best offer at the close.",
            "type": [
              "number",
              "null"
            ]
          },
          "ask_size": {
            "description": "Contracts offered at the close.",
            "type": [
              "integer",
              "null"
            ]
          },
          "bid": {
            "description": "Best bid at the close.",
            "type": [
              "number",
              "null"
            ]
          },
          "bid_size": {
            "description": "Contracts bid at the close.",
            "type": [
              "integer",
              "null"
            ]
          },
          "close": {
            "description": "Last trade price of the day.",
            "type": [
              "number",
              "null"
            ]
          },
          "contract_type": {
            "description": "Call or put.",
            "enum": [
              "call",
              "put"
            ],
            "type": "string"
          },
          "date_of_expiry": {
            "description": "Expiration date.",
            "format": "date",
            "type": "string"
          },
          "high": {
            "description": "Highest trade price of the day.",
            "type": [
              "number",
              "null"
            ]
          },
          "last_trade_timestamp": {
            "description": "Time of the last trade. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": [
              "integer",
              "null"
            ]
          },
          "low": {
            "description": "Lowest trade price of the day.",
            "type": [
              "number",
              "null"
            ]
          },
          "open": {
            "description": "First trade price of the day.",
            "type": [
              "number",
              "null"
            ]
          },
          "option_symbol": {
            "description": "OCC option symbol of the contract: root padded to six characters, expiration YYMMDD, C or P and the strike in thousandths over eight digits.",
            "type": "string"
          },
          "strike": {
            "description": "Strike price in dollars.",
            "type": "number"
          },
          "trade_count": {
            "description": "Trades.",
            "type": "integer"
          },
          "trading_date": {
            "description": "Trading date, YYYY-MM-DD.",
            "format": "date",
            "type": "string"
          },
          "underlying_symbol": {
            "description": "Option root of the contract.",
            "type": "string"
          },
          "volume": {
            "description": "Contracts traded.",
            "type": "integer"
          }
        },
        "required": [
          "option_symbol",
          "underlying_symbol",
          "date_of_expiry",
          "strike",
          "contract_type",
          "trading_date",
          "last_trade_timestamp",
          "open",
          "high",
          "low",
          "close",
          "volume",
          "trade_count",
          "bid",
          "bid_size",
          "ask",
          "ask_size"
        ],
        "type": "object"
      },
      "OptionsChainGreeksRow": {
        "additionalProperties": false,
        "description": "Greeks of one contract.",
        "properties": {
          "ask": {
            "description": "Best offer price.",
            "type": [
              "number",
              "null"
            ]
          },
          "bid": {
            "description": "Best bid price.",
            "type": [
              "number",
              "null"
            ]
          },
          "charm": {
            "description": "Change in delta per day (delta decay). Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "color": {
            "description": "Change in gamma per day. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "contract_type": {
            "description": "Call or put.",
            "enum": [
              "call",
              "put"
            ],
            "type": "string"
          },
          "d1": {
            "description": "The d1 term of the pricing model. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "d2": {
            "description": "The d2 term of the pricing model. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "date_of_expiry": {
            "description": "Expiration date.",
            "format": "date",
            "type": "string"
          },
          "delta": {
            "description": "Change in the option price for a $1 move in the underlying. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "dual_delta": {
            "description": "Change in the option price for a unit move in the strike. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "dual_gamma": {
            "description": "Second derivative of the option price with respect to the strike. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "epsilon": {
            "description": "Change in the option price for a one point move in the dividend yield. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "gamma": {
            "description": "Change in delta for a $1 move in the underlying. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "implied_volatility": {
            "description": "Implied volatility as a decimal (0.18 = 18%).",
            "type": [
              "number",
              "null"
            ]
          },
          "lambda": {
            "description": "Leverage: percentage change in the option price per percentage change in the underlying. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "option_symbol": {
            "description": "OCC option symbol of the contract: root padded to six characters, expiration YYMMDD, C or P and the strike in thousandths over eight digits.",
            "type": "string"
          },
          "rho": {
            "description": "Change in the option price for a one point move in the interest rate. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "speed": {
            "description": "Change in gamma for a $1 move in the underlying. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "strike": {
            "description": "Strike price in dollars.",
            "type": "number"
          },
          "theta": {
            "description": "Time decay: change in the option price per calendar day. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "timestamp": {
            "description": "Time of the quote the Greeks were computed from. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": [
              "integer",
              "null"
            ]
          },
          "ultima": {
            "description": "Change in vomma for a one point move in implied volatility. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "underlying_price": {
            "description": "Underlying price used by the model.",
            "type": [
              "number",
              "null"
            ]
          },
          "underlying_symbol": {
            "description": "Option root of the contract.",
            "type": "string"
          },
          "underlying_timestamp": {
            "description": "Time of the underlying price used. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": [
              "integer",
              "null"
            ]
          },
          "vanna": {
            "description": "Change in delta for a one point move in implied volatility. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "vega": {
            "description": "Change in the option price for a one point move in implied volatility. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "vera": {
            "description": "Change in rho for a one point move in implied volatility. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "veta": {
            "description": "Change in vega per day. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "vomma": {
            "description": "Change in vega for a one point move in implied volatility. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "zomma": {
            "description": "Change in gamma for a one point move in implied volatility. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          }
        },
        "required": [
          "option_symbol",
          "underlying_symbol",
          "date_of_expiry",
          "strike",
          "contract_type",
          "timestamp",
          "bid",
          "ask",
          "delta",
          "theta",
          "vega",
          "rho",
          "epsilon",
          "lambda",
          "gamma",
          "vanna",
          "charm",
          "vomma",
          "veta",
          "vera",
          "speed",
          "zomma",
          "color",
          "ultima",
          "d1",
          "d2",
          "dual_delta",
          "dual_gamma",
          "implied_volatility",
          "underlying_timestamp",
          "underlying_price"
        ],
        "type": "object"
      },
      "OptionsChainImpliedVolatilityRow": {
        "additionalProperties": false,
        "description": "Implied volatility of one contract.",
        "properties": {
          "ask": {
            "description": "Best offer price.",
            "type": [
              "number",
              "null"
            ]
          },
          "bid": {
            "description": "Best bid price.",
            "type": [
              "number",
              "null"
            ]
          },
          "contract_type": {
            "description": "Call or put.",
            "enum": [
              "call",
              "put"
            ],
            "type": "string"
          },
          "date_of_expiry": {
            "description": "Expiration date.",
            "format": "date",
            "type": "string"
          },
          "implied_volatility": {
            "description": "Implied volatility as a decimal (0.18 = 18%).",
            "type": [
              "number",
              "null"
            ]
          },
          "option_symbol": {
            "description": "OCC option symbol of the contract: root padded to six characters, expiration YYMMDD, C or P and the strike in thousandths over eight digits.",
            "type": "string"
          },
          "strike": {
            "description": "Strike price in dollars.",
            "type": "number"
          },
          "timestamp": {
            "description": "Time of the quote. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": [
              "integer",
              "null"
            ]
          },
          "underlying_price": {
            "description": "Underlying price used by the model.",
            "type": [
              "number",
              "null"
            ]
          },
          "underlying_symbol": {
            "description": "Option root of the contract.",
            "type": "string"
          },
          "underlying_timestamp": {
            "description": "Time of the underlying price used. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": [
              "integer",
              "null"
            ]
          }
        },
        "required": [
          "option_symbol",
          "underlying_symbol",
          "date_of_expiry",
          "strike",
          "contract_type",
          "timestamp",
          "bid",
          "ask",
          "implied_volatility",
          "underlying_timestamp",
          "underlying_price"
        ],
        "type": "object"
      },
      "OptionsChainOhlcRow": {
        "additionalProperties": false,
        "description": "Trading day of one contract.",
        "properties": {
          "close": {
            "description": "Latest trade price.",
            "type": [
              "number",
              "null"
            ]
          },
          "contract_type": {
            "description": "Call or put.",
            "enum": [
              "call",
              "put"
            ],
            "type": "string"
          },
          "date_of_expiry": {
            "description": "Expiration date.",
            "format": "date",
            "type": "string"
          },
          "high": {
            "description": "Highest trade price of the day.",
            "type": [
              "number",
              "null"
            ]
          },
          "low": {
            "description": "Lowest trade price of the day.",
            "type": [
              "number",
              "null"
            ]
          },
          "open": {
            "description": "First trade price of the day.",
            "type": [
              "number",
              "null"
            ]
          },
          "option_symbol": {
            "description": "OCC option symbol of the contract: root padded to six characters, expiration YYMMDD, C or P and the strike in thousandths over eight digits.",
            "type": "string"
          },
          "strike": {
            "description": "Strike price in dollars.",
            "type": "number"
          },
          "timestamp": {
            "description": "Time the statistics were taken. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": [
              "integer",
              "null"
            ]
          },
          "trade_count": {
            "description": "Trades.",
            "type": [
              "integer",
              "null"
            ]
          },
          "underlying_symbol": {
            "description": "Option root of the contract.",
            "type": "string"
          },
          "volume": {
            "description": "Contracts traded.",
            "type": [
              "integer",
              "null"
            ]
          }
        },
        "required": [
          "option_symbol",
          "underlying_symbol",
          "date_of_expiry",
          "strike",
          "contract_type",
          "timestamp",
          "open",
          "high",
          "low",
          "close",
          "volume",
          "trade_count"
        ],
        "type": "object"
      },
      "OptionsChainOpenInterestHistoryRow": {
        "additionalProperties": false,
        "description": "Open interest of one contract.",
        "properties": {
          "contract_type": {
            "description": "Call or put.",
            "enum": [
              "call",
              "put"
            ],
            "type": "string"
          },
          "date_of_expiry": {
            "description": "Expiration date.",
            "format": "date",
            "type": "string"
          },
          "open_interest": {
            "description": "Open contracts.",
            "type": "integer"
          },
          "option_symbol": {
            "description": "OCC option symbol of the contract: root padded to six characters, expiration YYMMDD, C or P and the strike in thousandths over eight digits.",
            "type": "string"
          },
          "strike": {
            "description": "Strike price in dollars.",
            "type": "number"
          },
          "timestamp": {
            "description": "Time the figure was published. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "trading_date": {
            "description": "Trading date on whose morning the figure was published.",
            "format": "date",
            "type": "string"
          },
          "underlying_symbol": {
            "description": "Option root of the contract.",
            "type": "string"
          }
        },
        "required": [
          "option_symbol",
          "underlying_symbol",
          "date_of_expiry",
          "strike",
          "contract_type",
          "trading_date",
          "timestamp",
          "open_interest"
        ],
        "type": "object"
      },
      "OptionsChainOpenInterestRow": {
        "additionalProperties": false,
        "description": "Open interest of one contract.",
        "properties": {
          "contract_type": {
            "description": "Call or put.",
            "enum": [
              "call",
              "put"
            ],
            "type": "string"
          },
          "date_of_expiry": {
            "description": "Expiration date.",
            "format": "date",
            "type": "string"
          },
          "open_interest": {
            "description": "Open contracts.",
            "type": "integer"
          },
          "option_symbol": {
            "description": "OCC option symbol of the contract: root padded to six characters, expiration YYMMDD, C or P and the strike in thousandths over eight digits.",
            "type": "string"
          },
          "strike": {
            "description": "Strike price in dollars.",
            "type": "number"
          },
          "timestamp": {
            "description": "Time the open interest was published. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "underlying_symbol": {
            "description": "Option root of the contract.",
            "type": "string"
          }
        },
        "required": [
          "option_symbol",
          "underlying_symbol",
          "date_of_expiry",
          "strike",
          "contract_type",
          "timestamp",
          "open_interest"
        ],
        "type": "object"
      },
      "OptionsChainQuotesRow": {
        "additionalProperties": false,
        "description": "Quote of one contract.",
        "properties": {
          "ask": {
            "description": "Best offer price.",
            "type": [
              "number",
              "null"
            ]
          },
          "ask_exchange": {
            "description": "Exchange code of the best offer.",
            "type": [
              "integer",
              "null"
            ]
          },
          "ask_size": {
            "description": "Contracts offered.",
            "type": [
              "integer",
              "null"
            ]
          },
          "bid": {
            "description": "Best bid price.",
            "type": [
              "number",
              "null"
            ]
          },
          "bid_exchange": {
            "description": "Exchange code of the best bid.",
            "type": [
              "integer",
              "null"
            ]
          },
          "bid_size": {
            "description": "Contracts bid.",
            "type": [
              "integer",
              "null"
            ]
          },
          "contract_type": {
            "description": "Call or put.",
            "enum": [
              "call",
              "put"
            ],
            "type": "string"
          },
          "date_of_expiry": {
            "description": "Expiration date.",
            "format": "date",
            "type": "string"
          },
          "option_symbol": {
            "description": "OCC option symbol of the contract: root padded to six characters, expiration YYMMDD, C or P and the strike in thousandths over eight digits.",
            "type": "string"
          },
          "strike": {
            "description": "Strike price in dollars.",
            "type": "number"
          },
          "timestamp": {
            "description": "Time of the quote. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": [
              "integer",
              "null"
            ]
          },
          "underlying_symbol": {
            "description": "Option root of the contract.",
            "type": "string"
          }
        },
        "required": [
          "option_symbol",
          "underlying_symbol",
          "date_of_expiry",
          "strike",
          "contract_type",
          "timestamp",
          "bid",
          "bid_size",
          "bid_exchange",
          "ask",
          "ask_size",
          "ask_exchange"
        ],
        "type": "object"
      },
      "OptionsChainRow": {
        "additionalProperties": false,
        "description": "One contract of the chain.",
        "properties": {
          "ask": {
            "description": "Best offer price.",
            "type": [
              "number",
              "null"
            ]
          },
          "ask_size": {
            "description": "Contracts offered.",
            "type": [
              "integer",
              "null"
            ]
          },
          "bid": {
            "description": "Best bid price.",
            "type": [
              "number",
              "null"
            ]
          },
          "bid_size": {
            "description": "Contracts bid.",
            "type": [
              "integer",
              "null"
            ]
          },
          "charm": {
            "description": "Change in delta per day (delta decay). Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "close": {
            "description": "Latest trade price.",
            "type": [
              "number",
              "null"
            ]
          },
          "color": {
            "description": "Change in gamma per day. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "contract_type": {
            "description": "Call or put.",
            "enum": [
              "call",
              "put"
            ],
            "type": "string"
          },
          "d1": {
            "description": "The d1 term of the pricing model. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "d2": {
            "description": "The d2 term of the pricing model. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "date_of_expiry": {
            "description": "Expiration date.",
            "format": "date",
            "type": "string"
          },
          "day_timestamp": {
            "description": "Time the day statistics were taken. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": [
              "integer",
              "null"
            ]
          },
          "delta": {
            "description": "Change in the option price for a $1 move in the underlying. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "dual_delta": {
            "description": "Change in the option price for a unit move in the strike. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "dual_gamma": {
            "description": "Second derivative of the option price with respect to the strike. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "epsilon": {
            "description": "Change in the option price for a one point move in the dividend yield. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "gamma": {
            "description": "Change in delta for a $1 move in the underlying. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "high": {
            "description": "Highest trade price of the day.",
            "type": [
              "number",
              "null"
            ]
          },
          "implied_volatility": {
            "description": "Implied volatility as a decimal (0.18 = 18%).",
            "type": [
              "number",
              "null"
            ]
          },
          "lambda": {
            "description": "Leverage: percentage change in the option price per percentage change in the underlying. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "low": {
            "description": "Lowest trade price of the day.",
            "type": [
              "number",
              "null"
            ]
          },
          "open": {
            "description": "First trade price of the day.",
            "type": [
              "number",
              "null"
            ]
          },
          "open_interest": {
            "description": "Open interest published at the start of the day.",
            "type": [
              "integer",
              "null"
            ]
          },
          "option_symbol": {
            "description": "OCC option symbol of the contract: root padded to six characters, expiration YYMMDD, C or P and the strike in thousandths over eight digits.",
            "type": "string"
          },
          "rho": {
            "description": "Change in the option price for a one point move in the interest rate. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "speed": {
            "description": "Change in gamma for a $1 move in the underlying. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "strike": {
            "description": "Strike price in dollars.",
            "type": "number"
          },
          "theta": {
            "description": "Time decay: change in the option price per calendar day. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "timestamp": {
            "description": "Time of the quote. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": [
              "integer",
              "null"
            ]
          },
          "trade_count": {
            "description": "Trades today.",
            "type": [
              "integer",
              "null"
            ]
          },
          "ultima": {
            "description": "Change in vomma for a one point move in implied volatility. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "underlying_price": {
            "description": "Underlying price used by the model.",
            "type": [
              "number",
              "null"
            ]
          },
          "underlying_symbol": {
            "description": "Option root of the contract.",
            "type": "string"
          },
          "underlying_timestamp": {
            "description": "Time of the underlying price used. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": [
              "integer",
              "null"
            ]
          },
          "vanna": {
            "description": "Change in delta for a one point move in implied volatility. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "vega": {
            "description": "Change in the option price for a one point move in implied volatility. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "vera": {
            "description": "Change in rho for a one point move in implied volatility. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "veta": {
            "description": "Change in vega per day. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "volume": {
            "description": "Contracts traded today.",
            "type": [
              "integer",
              "null"
            ]
          },
          "vomma": {
            "description": "Change in vega for a one point move in implied volatility. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "zomma": {
            "description": "Change in gamma for a one point move in implied volatility. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          }
        },
        "required": [
          "option_symbol",
          "underlying_symbol",
          "date_of_expiry",
          "strike",
          "contract_type",
          "timestamp",
          "bid",
          "bid_size",
          "ask",
          "ask_size",
          "open",
          "high",
          "low",
          "close",
          "volume",
          "trade_count",
          "day_timestamp",
          "open_interest",
          "delta",
          "theta",
          "vega",
          "rho",
          "epsilon",
          "lambda",
          "gamma",
          "vanna",
          "charm",
          "vomma",
          "veta",
          "vera",
          "speed",
          "zomma",
          "color",
          "ultima",
          "d1",
          "d2",
          "dual_delta",
          "dual_gamma",
          "implied_volatility",
          "underlying_timestamp",
          "underlying_price"
        ],
        "type": "object"
      },
      "OptionsContractBarsRow": {
        "additionalProperties": false,
        "description": "One candle.",
        "properties": {
          "bar_time": {
            "description": "Start of the interval. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "close": {
            "description": "Last trade price.",
            "type": "number"
          },
          "high": {
            "description": "Highest trade price.",
            "type": "number"
          },
          "low": {
            "description": "Lowest trade price.",
            "type": "number"
          },
          "open": {
            "description": "First trade price.",
            "type": "number"
          },
          "option_symbol": {
            "description": "OCC option symbol of the contract: root padded to six characters, expiration YYMMDD, C or P and the strike in thousandths over eight digits.",
            "type": "string"
          },
          "trade_count": {
            "description": "Trades in the interval.",
            "type": "integer"
          },
          "volume": {
            "description": "Contracts traded.",
            "type": "integer"
          },
          "vwap": {
            "description": "Volume-weighted average price; null for daily candles.",
            "type": [
              "number",
              "null"
            ]
          }
        },
        "required": [
          "option_symbol",
          "bar_time",
          "open",
          "high",
          "low",
          "close",
          "volume",
          "trade_count",
          "vwap"
        ],
        "type": "object"
      },
      "OptionsContractEodRow": {
        "additionalProperties": false,
        "description": "One trading date of the contract.",
        "properties": {
          "ask": {
            "description": "Best offer at the close.",
            "type": [
              "number",
              "null"
            ]
          },
          "ask_size": {
            "description": "Contracts offered at the close.",
            "type": [
              "integer",
              "null"
            ]
          },
          "bid": {
            "description": "Best bid at the close.",
            "type": [
              "number",
              "null"
            ]
          },
          "bid_size": {
            "description": "Contracts bid at the close.",
            "type": [
              "integer",
              "null"
            ]
          },
          "close": {
            "description": "Last trade price of the day.",
            "type": [
              "number",
              "null"
            ]
          },
          "high": {
            "description": "Highest trade price of the day.",
            "type": [
              "number",
              "null"
            ]
          },
          "last_trade_timestamp": {
            "description": "Time of the last trade. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": [
              "integer",
              "null"
            ]
          },
          "low": {
            "description": "Lowest trade price of the day.",
            "type": [
              "number",
              "null"
            ]
          },
          "open": {
            "description": "First trade price of the day.",
            "type": [
              "number",
              "null"
            ]
          },
          "option_symbol": {
            "description": "OCC option symbol of the contract: root padded to six characters, expiration YYMMDD, C or P and the strike in thousandths over eight digits.",
            "type": "string"
          },
          "trade_count": {
            "description": "Trades.",
            "type": "integer"
          },
          "trading_date": {
            "description": "Trading date, YYYY-MM-DD.",
            "format": "date",
            "type": "string"
          },
          "volume": {
            "description": "Contracts traded.",
            "type": "integer"
          }
        },
        "required": [
          "option_symbol",
          "trading_date",
          "last_trade_timestamp",
          "open",
          "high",
          "low",
          "close",
          "volume",
          "trade_count",
          "bid",
          "bid_size",
          "ask",
          "ask_size"
        ],
        "type": "object"
      },
      "OptionsContractFlowRow": {
        "additionalProperties": false,
        "description": "One classified print.",
        "properties": {
          "ask": {
            "description": "Best offer at the trade.",
            "type": [
              "number",
              "null"
            ]
          },
          "bid": {
            "description": "Best bid at the trade.",
            "type": [
              "number",
              "null"
            ]
          },
          "block": {
            "description": "The print is a block trade.",
            "type": "boolean"
          },
          "condition": {
            "description": "Sale condition code.",
            "type": "integer"
          },
          "day_volume": {
            "description": "Contract volume of the day up to this print.",
            "type": "integer"
          },
          "delta": {
            "description": "Delta at the trade.",
            "type": [
              "number",
              "null"
            ]
          },
          "exchange": {
            "description": "Exchange code of the venue.",
            "type": "integer"
          },
          "exchange_name": {
            "description": "Name of the venue.",
            "type": "string"
          },
          "golden": {
            "description": "The print is a golden sweep: a large sweep, mostly at the ask.",
            "type": "boolean"
          },
          "id": {
            "description": "Stable identifier of the print.",
            "type": "string"
          },
          "implied_volatility": {
            "description": "Implied volatility at the trade.",
            "type": [
              "number",
              "null"
            ]
          },
          "open_interest": {
            "description": "Open interest of the contract.",
            "type": [
              "integer",
              "null"
            ]
          },
          "option_symbol": {
            "description": "OCC option symbol of the contract: root padded to six characters, expiration YYMMDD, C or P and the strike in thousandths over eight digits.",
            "type": "string"
          },
          "premium": {
            "description": "Premium in dollars: price x size x 100.",
            "type": "number"
          },
          "price": {
            "description": "Trade price per contract in dollars.",
            "type": "number"
          },
          "sentiment": {
            "description": "Inferred sentiment of the trade.",
            "enum": [
              "bullish",
              "bearish",
              "neutral",
              "unknown"
            ],
            "type": "string"
          },
          "session": {
            "description": "Session of the trade: rth, gth or curb.",
            "type": "string"
          },
          "side": {
            "description": "Where the trade printed relative to the market: above_ask, ask (at or near the ask), mid, bid (at or near the bid), below_bid, or unknown when the quote was missing or invalid.",
            "enum": [
              "above_ask",
              "ask",
              "mid",
              "bid",
              "below_bid",
              "unknown"
            ],
            "type": "string"
          },
          "size": {
            "description": "Contracts traded.",
            "type": "integer"
          },
          "timestamp": {
            "description": "Time of the trade. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "trade_type": {
            "description": "Trade type: sweep, split, single, multileg, cross or floor.",
            "type": "string"
          },
          "underlying_price": {
            "description": "Underlying price at the trade.",
            "type": [
              "number",
              "null"
            ]
          }
        },
        "required": [
          "option_symbol",
          "id",
          "timestamp",
          "price",
          "size",
          "premium",
          "bid",
          "ask",
          "side",
          "sentiment",
          "underlying_price",
          "implied_volatility",
          "delta",
          "open_interest",
          "day_volume",
          "exchange",
          "exchange_name",
          "condition",
          "trade_type",
          "block",
          "golden",
          "session"
        ],
        "type": "object"
      },
      "OptionsContractGreeksEodRow": {
        "additionalProperties": false,
        "description": "End-of-day Greeks of one trading date.",
        "properties": {
          "ask": {
            "description": "Best offer at the close.",
            "type": [
              "number",
              "null"
            ]
          },
          "ask_size": {
            "description": "Contracts offered at the close.",
            "type": [
              "integer",
              "null"
            ]
          },
          "bid": {
            "description": "Best bid at the close.",
            "type": [
              "number",
              "null"
            ]
          },
          "bid_size": {
            "description": "Contracts bid at the close.",
            "type": [
              "integer",
              "null"
            ]
          },
          "charm": {
            "description": "Change in delta per day (delta decay). Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "close": {
            "description": "Last trade price of the day.",
            "type": [
              "number",
              "null"
            ]
          },
          "color": {
            "description": "Change in gamma per day. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "d1": {
            "description": "The d1 term of the pricing model. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "d2": {
            "description": "The d2 term of the pricing model. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "delta": {
            "description": "Change in the option price for a $1 move in the underlying. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "dual_delta": {
            "description": "Change in the option price for a unit move in the strike. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "dual_gamma": {
            "description": "Second derivative of the option price with respect to the strike. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "epsilon": {
            "description": "Change in the option price for a one point move in the dividend yield. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "gamma": {
            "description": "Change in delta for a $1 move in the underlying. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "high": {
            "description": "Highest trade price of the day.",
            "type": [
              "number",
              "null"
            ]
          },
          "implied_volatility": {
            "description": "Implied volatility as a decimal (0.18 = 18%).",
            "type": [
              "number",
              "null"
            ]
          },
          "lambda": {
            "description": "Leverage: percentage change in the option price per percentage change in the underlying. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "low": {
            "description": "Lowest trade price of the day.",
            "type": [
              "number",
              "null"
            ]
          },
          "open": {
            "description": "First trade price of the day.",
            "type": [
              "number",
              "null"
            ]
          },
          "option_symbol": {
            "description": "OCC option symbol of the contract: root padded to six characters, expiration YYMMDD, C or P and the strike in thousandths over eight digits.",
            "type": "string"
          },
          "rho": {
            "description": "Change in the option price for a one point move in the interest rate. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "speed": {
            "description": "Change in gamma for a $1 move in the underlying. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "theta": {
            "description": "Time decay: change in the option price per calendar day. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "trade_count": {
            "description": "Trades.",
            "type": "integer"
          },
          "trading_date": {
            "description": "Trading date, YYYY-MM-DD.",
            "format": "date",
            "type": "string"
          },
          "ultima": {
            "description": "Change in vomma for a one point move in implied volatility. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "underlying_price": {
            "description": "Underlying price used by the model.",
            "type": [
              "number",
              "null"
            ]
          },
          "underlying_timestamp": {
            "description": "Time of the underlying price used. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": [
              "integer",
              "null"
            ]
          },
          "vanna": {
            "description": "Change in delta for a one point move in implied volatility. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "vega": {
            "description": "Change in the option price for a one point move in implied volatility. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "vera": {
            "description": "Change in rho for a one point move in implied volatility. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "veta": {
            "description": "Change in vega per day. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "volume": {
            "description": "Contracts traded.",
            "type": "integer"
          },
          "vomma": {
            "description": "Change in vega for a one point move in implied volatility. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "zomma": {
            "description": "Change in gamma for a one point move in implied volatility. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          }
        },
        "required": [
          "option_symbol",
          "trading_date",
          "open",
          "high",
          "low",
          "close",
          "volume",
          "trade_count",
          "bid",
          "bid_size",
          "ask",
          "ask_size",
          "delta",
          "theta",
          "vega",
          "rho",
          "epsilon",
          "lambda",
          "gamma",
          "vanna",
          "charm",
          "vomma",
          "veta",
          "vera",
          "speed",
          "zomma",
          "color",
          "ultima",
          "d1",
          "d2",
          "dual_delta",
          "dual_gamma",
          "implied_volatility",
          "underlying_timestamp",
          "underlying_price"
        ],
        "type": "object"
      },
      "OptionsContractGreeksRow": {
        "additionalProperties": false,
        "description": "Greeks of one interval.",
        "properties": {
          "ask": {
            "description": "Best offer price.",
            "type": [
              "number",
              "null"
            ]
          },
          "bid": {
            "description": "Best bid price.",
            "type": [
              "number",
              "null"
            ]
          },
          "charm": {
            "description": "Change in delta per day (delta decay). Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "color": {
            "description": "Change in gamma per day. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "d1": {
            "description": "The d1 term of the pricing model. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "d2": {
            "description": "The d2 term of the pricing model. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "delta": {
            "description": "Change in the option price for a $1 move in the underlying. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "dual_delta": {
            "description": "Change in the option price for a unit move in the strike. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "dual_gamma": {
            "description": "Second derivative of the option price with respect to the strike. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "epsilon": {
            "description": "Change in the option price for a one point move in the dividend yield. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "gamma": {
            "description": "Change in delta for a $1 move in the underlying. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "implied_volatility": {
            "description": "Implied volatility as a decimal (0.18 = 18%).",
            "type": [
              "number",
              "null"
            ]
          },
          "lambda": {
            "description": "Leverage: percentage change in the option price per percentage change in the underlying. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "option_symbol": {
            "description": "OCC option symbol of the contract: root padded to six characters, expiration YYMMDD, C or P and the strike in thousandths over eight digits.",
            "type": "string"
          },
          "rho": {
            "description": "Change in the option price for a one point move in the interest rate. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "speed": {
            "description": "Change in gamma for a $1 move in the underlying. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "theta": {
            "description": "Time decay: change in the option price per calendar day. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "timestamp": {
            "description": "Start of the interval. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "ultima": {
            "description": "Change in vomma for a one point move in implied volatility. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "underlying_price": {
            "description": "Underlying price used by the model.",
            "type": [
              "number",
              "null"
            ]
          },
          "underlying_timestamp": {
            "description": "Time of the underlying price used. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": [
              "integer",
              "null"
            ]
          },
          "vanna": {
            "description": "Change in delta for a one point move in implied volatility. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "vega": {
            "description": "Change in the option price for a one point move in implied volatility. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "vera": {
            "description": "Change in rho for a one point move in implied volatility. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "veta": {
            "description": "Change in vega per day. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "vomma": {
            "description": "Change in vega for a one point move in implied volatility. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "zomma": {
            "description": "Change in gamma for a one point move in implied volatility. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          }
        },
        "required": [
          "option_symbol",
          "timestamp",
          "bid",
          "ask",
          "delta",
          "theta",
          "vega",
          "rho",
          "epsilon",
          "lambda",
          "gamma",
          "vanna",
          "charm",
          "vomma",
          "veta",
          "vera",
          "speed",
          "zomma",
          "color",
          "ultima",
          "d1",
          "d2",
          "dual_delta",
          "dual_gamma",
          "implied_volatility",
          "underlying_timestamp",
          "underlying_price"
        ],
        "type": "object"
      },
      "OptionsContractImpliedVolatilityRow": {
        "additionalProperties": false,
        "description": "Implied volatility of one interval.",
        "properties": {
          "ask": {
            "description": "Best offer price.",
            "type": [
              "number",
              "null"
            ]
          },
          "ask_implied_volatility": {
            "description": "Implied volatility at the offer.",
            "type": [
              "number",
              "null"
            ]
          },
          "bid": {
            "description": "Best bid price.",
            "type": [
              "number",
              "null"
            ]
          },
          "bid_implied_volatility": {
            "description": "Implied volatility at the bid.",
            "type": [
              "number",
              "null"
            ]
          },
          "implied_volatility": {
            "description": "Implied volatility at the midpoint.",
            "type": [
              "number",
              "null"
            ]
          },
          "midpoint": {
            "description": "Midpoint of the bid and offer.",
            "type": [
              "number",
              "null"
            ]
          },
          "option_symbol": {
            "description": "OCC option symbol of the contract: root padded to six characters, expiration YYMMDD, C or P and the strike in thousandths over eight digits.",
            "type": "string"
          },
          "timestamp": {
            "description": "Start of the interval. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "underlying_price": {
            "description": "Underlying price used by the model.",
            "type": [
              "number",
              "null"
            ]
          },
          "underlying_timestamp": {
            "description": "Time of the underlying price used. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": [
              "integer",
              "null"
            ]
          }
        },
        "required": [
          "option_symbol",
          "timestamp",
          "bid",
          "bid_implied_volatility",
          "midpoint",
          "implied_volatility",
          "ask",
          "ask_implied_volatility",
          "underlying_timestamp",
          "underlying_price"
        ],
        "type": "object"
      },
      "OptionsContractOpenInterestRow": {
        "additionalProperties": false,
        "description": "Open interest on one trading date.",
        "properties": {
          "open_interest": {
            "description": "Open contracts.",
            "type": "integer"
          },
          "option_symbol": {
            "description": "OCC option symbol of the contract: root padded to six characters, expiration YYMMDD, C or P and the strike in thousandths over eight digits.",
            "type": "string"
          },
          "timestamp": {
            "description": "Time the figure was published. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "trading_date": {
            "description": "Trading date on whose morning the figure was published.",
            "format": "date",
            "type": "string"
          }
        },
        "required": [
          "option_symbol",
          "trading_date",
          "timestamp",
          "open_interest"
        ],
        "type": "object"
      },
      "OptionsContractPriceHistoryRow": {
        "additionalProperties": false,
        "description": "One candle.",
        "properties": {
          "bar_time": {
            "description": "Start of the interval. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "close": {
            "description": "Last trade price.",
            "type": [
              "number",
              "null"
            ]
          },
          "high": {
            "description": "Highest trade price.",
            "type": [
              "number",
              "null"
            ]
          },
          "low": {
            "description": "Lowest trade price.",
            "type": [
              "number",
              "null"
            ]
          },
          "open": {
            "description": "First trade price.",
            "type": [
              "number",
              "null"
            ]
          },
          "option_symbol": {
            "description": "OCC option symbol of the contract: root padded to six characters, expiration YYMMDD, C or P and the strike in thousandths over eight digits.",
            "type": "string"
          },
          "trade_count": {
            "description": "Trades in the interval.",
            "type": "integer"
          },
          "underlying_price": {
            "description": "Price of the underlying during the interval.",
            "type": [
              "number",
              "null"
            ]
          },
          "volume": {
            "description": "Contracts traded.",
            "type": "integer"
          },
          "vwap": {
            "description": "Volume-weighted average price.",
            "type": [
              "number",
              "null"
            ]
          }
        },
        "required": [
          "option_symbol",
          "bar_time",
          "open",
          "high",
          "low",
          "close",
          "volume",
          "trade_count",
          "vwap",
          "underlying_price"
        ],
        "type": "object"
      },
      "OptionsContractQuoteAtTimeRow": {
        "additionalProperties": false,
        "description": "The best bid and offer of one contract at an instant.",
        "properties": {
          "contract_type": {
            "description": "Call or put.",
            "enum": [
              "call",
              "put"
            ],
            "type": "string"
          },
          "date_of_expiry": {
            "description": "Expiration date.",
            "format": "date",
            "type": "string"
          },
          "option_symbol": {
            "description": "OCC option symbol of the contract: root padded to six characters, expiration YYMMDD, C or P and the strike in thousandths over eight digits.",
            "type": "string"
          },
          "quote": {
            "additionalProperties": false,
            "description": "The quote.",
            "properties": {
              "ask": {
                "description": "Best offer price.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "ask_condition": {
                "description": "Quote condition code of the offer.",
                "type": [
                  "integer",
                  "null"
                ]
              },
              "ask_exchange": {
                "description": "Exchange code of the best offer.",
                "type": [
                  "integer",
                  "null"
                ]
              },
              "ask_size": {
                "description": "Contracts offered.",
                "type": [
                  "integer",
                  "null"
                ]
              },
              "bid": {
                "description": "Best bid price.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "bid_condition": {
                "description": "Quote condition code of the bid.",
                "type": [
                  "integer",
                  "null"
                ]
              },
              "bid_exchange": {
                "description": "Exchange code of the best bid.",
                "type": [
                  "integer",
                  "null"
                ]
              },
              "bid_size": {
                "description": "Contracts bid.",
                "type": [
                  "integer",
                  "null"
                ]
              },
              "timestamp": {
                "description": "Time of the quote. Unix epoch milliseconds (UTC).",
                "format": "unix-ms",
                "type": "integer"
              }
            },
            "required": [
              "timestamp",
              "bid",
              "bid_size",
              "bid_exchange",
              "bid_condition",
              "ask",
              "ask_size",
              "ask_exchange",
              "ask_condition"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "requested_timestamp": {
            "description": "The instant that was asked for. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "strike": {
            "description": "Strike price in dollars.",
            "type": "number"
          },
          "underlying_symbol": {
            "description": "Option root of the contract.",
            "type": "string"
          }
        },
        "required": [
          "option_symbol",
          "underlying_symbol",
          "contract_type",
          "strike",
          "date_of_expiry",
          "requested_timestamp",
          "quote"
        ],
        "type": "object"
      },
      "OptionsContractQuotesRow": {
        "additionalProperties": false,
        "description": "One quote of the contract.",
        "properties": {
          "ask": {
            "description": "Best offer price.",
            "type": [
              "number",
              "null"
            ]
          },
          "ask_condition": {
            "description": "Quote condition code of the offer.",
            "type": [
              "integer",
              "null"
            ]
          },
          "ask_exchange": {
            "description": "Exchange code of the best offer.",
            "type": [
              "integer",
              "null"
            ]
          },
          "ask_size": {
            "description": "Contracts offered.",
            "type": [
              "integer",
              "null"
            ]
          },
          "bid": {
            "description": "Best bid price.",
            "type": [
              "number",
              "null"
            ]
          },
          "bid_condition": {
            "description": "Quote condition code of the bid.",
            "type": [
              "integer",
              "null"
            ]
          },
          "bid_exchange": {
            "description": "Exchange code of the best bid.",
            "type": [
              "integer",
              "null"
            ]
          },
          "bid_size": {
            "description": "Contracts bid.",
            "type": [
              "integer",
              "null"
            ]
          },
          "option_symbol": {
            "description": "OCC option symbol of the contract: root padded to six characters, expiration YYMMDD, C or P and the strike in thousandths over eight digits.",
            "type": "string"
          },
          "timestamp": {
            "description": "Time of the quote. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          }
        },
        "required": [
          "option_symbol",
          "timestamp",
          "bid",
          "bid_size",
          "bid_exchange",
          "bid_condition",
          "ask",
          "ask_size",
          "ask_exchange",
          "ask_condition"
        ],
        "type": "object"
      },
      "OptionsContractSnapshotRow": {
        "additionalProperties": false,
        "description": "Current state of one contract.",
        "properties": {
          "contract_type": {
            "description": "Call or put.",
            "enum": [
              "call",
              "put"
            ],
            "type": "string"
          },
          "date_of_expiry": {
            "description": "Expiration date.",
            "format": "date",
            "type": "string"
          },
          "day": {
            "additionalProperties": false,
            "description": "The trading day so far; prices are null before the first trade.",
            "properties": {
              "close": {
                "description": "Latest trade price.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "high": {
                "description": "Highest trade price of the day.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "low": {
                "description": "Lowest trade price of the day.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "open": {
                "description": "First trade price of the day.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "timestamp": {
                "description": "Time the statistics were taken. Unix epoch milliseconds (UTC).",
                "format": "unix-ms",
                "type": "integer"
              },
              "trade_count": {
                "description": "Trades today.",
                "type": "integer"
              },
              "volume": {
                "description": "Contracts traded today.",
                "type": "integer"
              }
            },
            "required": [
              "timestamp",
              "open",
              "high",
              "low",
              "close",
              "volume",
              "trade_count"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "greeks": {
            "additionalProperties": false,
            "description": "Greeks and implied volatility.",
            "properties": {
              "charm": {
                "description": "Change in delta per day (delta decay). Null when not part of the requested order or outside the regular session.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "color": {
                "description": "Change in gamma per day. Null when not part of the requested order or outside the regular session.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "d1": {
                "description": "The d1 term of the pricing model. Null when not part of the requested order or outside the regular session.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "d2": {
                "description": "The d2 term of the pricing model. Null when not part of the requested order or outside the regular session.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "delta": {
                "description": "Change in the option price for a $1 move in the underlying. Null when not part of the requested order or outside the regular session.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "dual_delta": {
                "description": "Change in the option price for a unit move in the strike. Null when not part of the requested order or outside the regular session.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "dual_gamma": {
                "description": "Second derivative of the option price with respect to the strike. Null when not part of the requested order or outside the regular session.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "epsilon": {
                "description": "Change in the option price for a one point move in the dividend yield. Null when not part of the requested order or outside the regular session.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "gamma": {
                "description": "Change in delta for a $1 move in the underlying. Null when not part of the requested order or outside the regular session.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "implied_volatility": {
                "description": "Implied volatility as a decimal (0.18 = 18%).",
                "type": [
                  "number",
                  "null"
                ]
              },
              "lambda": {
                "description": "Leverage: percentage change in the option price per percentage change in the underlying. Null when not part of the requested order or outside the regular session.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "rho": {
                "description": "Change in the option price for a one point move in the interest rate. Null when not part of the requested order or outside the regular session.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "speed": {
                "description": "Change in gamma for a $1 move in the underlying. Null when not part of the requested order or outside the regular session.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "theta": {
                "description": "Time decay: change in the option price per calendar day. Null when not part of the requested order or outside the regular session.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "timestamp": {
                "description": "Time of the quote the Greeks were computed from. Unix epoch milliseconds (UTC).",
                "format": "unix-ms",
                "type": "integer"
              },
              "ultima": {
                "description": "Change in vomma for a one point move in implied volatility. Null when not part of the requested order or outside the regular session.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "underlying_price": {
                "description": "Underlying price used by the model.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "underlying_timestamp": {
                "description": "Time of the underlying price used. Unix epoch milliseconds (UTC).",
                "format": "unix-ms",
                "type": [
                  "integer",
                  "null"
                ]
              },
              "vanna": {
                "description": "Change in delta for a one point move in implied volatility. Null when not part of the requested order or outside the regular session.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "vega": {
                "description": "Change in the option price for a one point move in implied volatility. Null when not part of the requested order or outside the regular session.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "vera": {
                "description": "Change in rho for a one point move in implied volatility. Null when not part of the requested order or outside the regular session.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "veta": {
                "description": "Change in vega per day. Null when not part of the requested order or outside the regular session.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "vomma": {
                "description": "Change in vega for a one point move in implied volatility. Null when not part of the requested order or outside the regular session.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "zomma": {
                "description": "Change in gamma for a one point move in implied volatility. Null when not part of the requested order or outside the regular session.",
                "type": [
                  "number",
                  "null"
                ]
              }
            },
            "required": [
              "timestamp",
              "delta",
              "theta",
              "vega",
              "rho",
              "epsilon",
              "lambda",
              "gamma",
              "vanna",
              "charm",
              "vomma",
              "veta",
              "vera",
              "speed",
              "zomma",
              "color",
              "ultima",
              "d1",
              "d2",
              "dual_delta",
              "dual_gamma",
              "implied_volatility",
              "underlying_timestamp",
              "underlying_price"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "open_interest": {
            "additionalProperties": false,
            "description": "Open interest published at the start of the trading day.",
            "properties": {
              "open_interest": {
                "description": "Open contracts.",
                "type": "integer"
              },
              "timestamp": {
                "description": "Time the open interest was published. Unix epoch milliseconds (UTC).",
                "format": "unix-ms",
                "type": "integer"
              }
            },
            "required": [
              "timestamp",
              "open_interest"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "option_symbol": {
            "description": "OCC option symbol of the contract: root padded to six characters, expiration YYMMDD, C or P and the strike in thousandths over eight digits.",
            "type": "string"
          },
          "quote": {
            "additionalProperties": false,
            "description": "Latest national best bid and offer.",
            "properties": {
              "ask": {
                "description": "Best offer price.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "ask_exchange": {
                "description": "Exchange code of the best offer.",
                "type": [
                  "integer",
                  "null"
                ]
              },
              "ask_size": {
                "description": "Contracts offered.",
                "type": [
                  "integer",
                  "null"
                ]
              },
              "bid": {
                "description": "Best bid price.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "bid_exchange": {
                "description": "Exchange code of the best bid.",
                "type": [
                  "integer",
                  "null"
                ]
              },
              "bid_size": {
                "description": "Contracts bid.",
                "type": [
                  "integer",
                  "null"
                ]
              },
              "timestamp": {
                "description": "Time of the quote. Unix epoch milliseconds (UTC).",
                "format": "unix-ms",
                "type": "integer"
              }
            },
            "required": [
              "timestamp",
              "bid",
              "bid_size",
              "bid_exchange",
              "ask",
              "ask_size",
              "ask_exchange"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "strike": {
            "description": "Strike price in dollars.",
            "type": "number"
          },
          "underlying_symbol": {
            "description": "Option root of the contract.",
            "type": "string"
          }
        },
        "required": [
          "option_symbol",
          "underlying_symbol",
          "contract_type",
          "strike",
          "date_of_expiry",
          "quote",
          "day",
          "open_interest",
          "greeks"
        ],
        "type": "object"
      },
      "OptionsContractStatsRow": {
        "additionalProperties": false,
        "description": "Print statistics of one contract.",
        "properties": {
          "by_side": {
            "additionalProperties": false,
            "description": "Totals by side of the market, in the same classes as by_side of /v1/options/flow/stats: ask is at or near the ask, bid at or near the bid.",
            "properties": {
              "above_ask": {
                "additionalProperties": false,
                "description": "Prints on this side.",
                "properties": {
                  "premium": {
                    "description": "Premium in dollars.",
                    "type": "number"
                  },
                  "trade_count": {
                    "description": "Prints.",
                    "type": "integer"
                  },
                  "volume": {
                    "description": "Contracts.",
                    "type": "integer"
                  }
                },
                "required": [
                  "premium",
                  "volume",
                  "trade_count"
                ],
                "type": "object"
              },
              "ask": {
                "additionalProperties": false,
                "description": "Prints on this side.",
                "properties": {
                  "premium": {
                    "description": "Premium in dollars.",
                    "type": "number"
                  },
                  "trade_count": {
                    "description": "Prints.",
                    "type": "integer"
                  },
                  "volume": {
                    "description": "Contracts.",
                    "type": "integer"
                  }
                },
                "required": [
                  "premium",
                  "volume",
                  "trade_count"
                ],
                "type": "object"
              },
              "below_bid": {
                "additionalProperties": false,
                "description": "Prints on this side.",
                "properties": {
                  "premium": {
                    "description": "Premium in dollars.",
                    "type": "number"
                  },
                  "trade_count": {
                    "description": "Prints.",
                    "type": "integer"
                  },
                  "volume": {
                    "description": "Contracts.",
                    "type": "integer"
                  }
                },
                "required": [
                  "premium",
                  "volume",
                  "trade_count"
                ],
                "type": "object"
              },
              "bid": {
                "additionalProperties": false,
                "description": "Prints on this side.",
                "properties": {
                  "premium": {
                    "description": "Premium in dollars.",
                    "type": "number"
                  },
                  "trade_count": {
                    "description": "Prints.",
                    "type": "integer"
                  },
                  "volume": {
                    "description": "Contracts.",
                    "type": "integer"
                  }
                },
                "required": [
                  "premium",
                  "volume",
                  "trade_count"
                ],
                "type": "object"
              },
              "mid": {
                "additionalProperties": false,
                "description": "Prints on this side.",
                "properties": {
                  "premium": {
                    "description": "Premium in dollars.",
                    "type": "number"
                  },
                  "trade_count": {
                    "description": "Prints.",
                    "type": "integer"
                  },
                  "volume": {
                    "description": "Contracts.",
                    "type": "integer"
                  }
                },
                "required": [
                  "premium",
                  "volume",
                  "trade_count"
                ],
                "type": "object"
              },
              "unknown": {
                "additionalProperties": false,
                "description": "Prints on this side.",
                "properties": {
                  "premium": {
                    "description": "Premium in dollars.",
                    "type": "number"
                  },
                  "trade_count": {
                    "description": "Prints.",
                    "type": "integer"
                  },
                  "volume": {
                    "description": "Contracts.",
                    "type": "integer"
                  }
                },
                "required": [
                  "premium",
                  "volume",
                  "trade_count"
                ],
                "type": "object"
              }
            },
            "required": [
              "above_ask",
              "ask",
              "mid",
              "bid",
              "below_bid",
              "unknown"
            ],
            "type": "object"
          },
          "contract_type": {
            "description": "Call or put.",
            "enum": [
              "call",
              "put"
            ],
            "type": "string"
          },
          "date_of_expiry": {
            "description": "Expiration date.",
            "format": "date",
            "type": "string"
          },
          "open_interest": {
            "description": "Open interest of the contract.",
            "type": "integer"
          },
          "option_symbol": {
            "description": "OCC option symbol of the contract: root padded to six characters, expiration YYMMDD, C or P and the strike in thousandths over eight digits.",
            "type": "string"
          },
          "premium": {
            "description": "Total premium in dollars.",
            "type": "number"
          },
          "sentiment": {
            "additionalProperties": false,
            "description": "Premium by inferred sentiment.",
            "properties": {
              "bearish_premium": {
                "description": "Premium of bearish prints.",
                "type": "number"
              },
              "bullish_premium": {
                "description": "Premium of bullish prints.",
                "type": "number"
              },
              "label": {
                "description": "Dominant sentiment.",
                "enum": [
                  "bullish",
                  "bearish",
                  "neutral"
                ],
                "type": "string"
              },
              "neutral_premium": {
                "description": "Premium of neutral prints.",
                "type": "number"
              }
            },
            "required": [
              "bullish_premium",
              "bearish_premium",
              "neutral_premium",
              "label"
            ],
            "type": "object"
          },
          "session": {
            "description": "Session the statistics cover.",
            "type": "string"
          },
          "strike": {
            "description": "Strike price in dollars.",
            "type": "number"
          },
          "trade_count": {
            "description": "Prints.",
            "type": "integer"
          },
          "trade_types": {
            "additionalProperties": false,
            "description": "Prints by trade type.",
            "properties": {
              "block": {
                "additionalProperties": false,
                "description": "Prints of this type.",
                "properties": {
                  "count": {
                    "description": "Prints.",
                    "type": "integer"
                  },
                  "premium": {
                    "description": "Premium in dollars.",
                    "type": "number"
                  }
                },
                "required": [
                  "count",
                  "premium"
                ],
                "type": "object"
              },
              "cross": {
                "additionalProperties": false,
                "description": "Prints of this type.",
                "properties": {
                  "count": {
                    "description": "Prints.",
                    "type": "integer"
                  },
                  "premium": {
                    "description": "Premium in dollars.",
                    "type": "number"
                  }
                },
                "required": [
                  "count",
                  "premium"
                ],
                "type": "object"
              },
              "floor": {
                "additionalProperties": false,
                "description": "Prints of this type.",
                "properties": {
                  "count": {
                    "description": "Prints.",
                    "type": "integer"
                  },
                  "premium": {
                    "description": "Premium in dollars.",
                    "type": "number"
                  }
                },
                "required": [
                  "count",
                  "premium"
                ],
                "type": "object"
              },
              "golden": {
                "additionalProperties": false,
                "description": "Prints of this type.",
                "properties": {
                  "count": {
                    "description": "Prints.",
                    "type": "integer"
                  },
                  "premium": {
                    "description": "Premium in dollars.",
                    "type": "number"
                  }
                },
                "required": [
                  "count",
                  "premium"
                ],
                "type": "object"
              },
              "multileg": {
                "additionalProperties": false,
                "description": "Prints of this type.",
                "properties": {
                  "count": {
                    "description": "Prints.",
                    "type": "integer"
                  },
                  "premium": {
                    "description": "Premium in dollars.",
                    "type": "number"
                  }
                },
                "required": [
                  "count",
                  "premium"
                ],
                "type": "object"
              },
              "split": {
                "additionalProperties": false,
                "description": "Prints of this type.",
                "properties": {
                  "count": {
                    "description": "Prints.",
                    "type": "integer"
                  },
                  "premium": {
                    "description": "Premium in dollars.",
                    "type": "number"
                  }
                },
                "required": [
                  "count",
                  "premium"
                ],
                "type": "object"
              },
              "sweep": {
                "additionalProperties": false,
                "description": "Prints of this type.",
                "properties": {
                  "count": {
                    "description": "Prints.",
                    "type": "integer"
                  },
                  "premium": {
                    "description": "Premium in dollars.",
                    "type": "number"
                  }
                },
                "required": [
                  "count",
                  "premium"
                ],
                "type": "object"
              }
            },
            "required": [
              "sweep",
              "split",
              "block",
              "golden",
              "multileg",
              "cross",
              "floor"
            ],
            "type": "object"
          },
          "trading_date": {
            "description": "Trading date of the statistics.",
            "format": "date",
            "type": "string"
          },
          "underlying_symbol": {
            "description": "Option root of the contract.",
            "type": "string"
          },
          "volume": {
            "description": "Contracts traded.",
            "type": "integer"
          }
        },
        "required": [
          "option_symbol",
          "underlying_symbol",
          "contract_type",
          "strike",
          "date_of_expiry",
          "trading_date",
          "session",
          "premium",
          "volume",
          "trade_count",
          "by_side",
          "sentiment",
          "trade_types",
          "open_interest"
        ],
        "type": "object"
      },
      "OptionsContractTradeAtTimeRow": {
        "additionalProperties": false,
        "description": "The last trade of one contract at an instant.",
        "properties": {
          "contract_type": {
            "description": "Call or put.",
            "enum": [
              "call",
              "put"
            ],
            "type": "string"
          },
          "date_of_expiry": {
            "description": "Expiration date.",
            "format": "date",
            "type": "string"
          },
          "option_symbol": {
            "description": "OCC option symbol of the contract: root padded to six characters, expiration YYMMDD, C or P and the strike in thousandths over eight digits.",
            "type": "string"
          },
          "requested_timestamp": {
            "description": "The instant that was asked for. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "strike": {
            "description": "Strike price in dollars.",
            "type": "number"
          },
          "trade": {
            "additionalProperties": false,
            "description": "The trade.",
            "properties": {
              "condition": {
                "description": "Sale condition code.",
                "type": "integer"
              },
              "exchange": {
                "description": "Exchange code of the venue that executed the trade.",
                "type": "integer"
              },
              "extended_conditions": {
                "description": "Extended sale condition codes; empty when none apply.",
                "items": {
                  "description": "Condition code.",
                  "type": "integer"
                },
                "type": "array"
              },
              "price": {
                "description": "Trade price per contract in dollars.",
                "type": "number"
              },
              "sequence": {
                "description": "Sequence number of the trade in the consolidated feed.",
                "type": "integer"
              },
              "size": {
                "description": "Contracts traded.",
                "type": "integer"
              },
              "timestamp": {
                "description": "Time of the trade. Unix epoch milliseconds (UTC).",
                "format": "unix-ms",
                "type": "integer"
              }
            },
            "required": [
              "timestamp",
              "sequence",
              "price",
              "size",
              "exchange",
              "condition",
              "extended_conditions"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "underlying_symbol": {
            "description": "Option root of the contract.",
            "type": "string"
          }
        },
        "required": [
          "option_symbol",
          "underlying_symbol",
          "contract_type",
          "strike",
          "date_of_expiry",
          "requested_timestamp",
          "trade"
        ],
        "type": "object"
      },
      "OptionsContractTradeGreeksRow": {
        "additionalProperties": false,
        "description": "One trade with its Greeks.",
        "properties": {
          "charm": {
            "description": "Change in delta per day (delta decay). Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "color": {
            "description": "Change in gamma per day. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "condition": {
            "description": "Sale condition code.",
            "type": "integer"
          },
          "d1": {
            "description": "The d1 term of the pricing model. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "d2": {
            "description": "The d2 term of the pricing model. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "delta": {
            "description": "Change in the option price for a $1 move in the underlying. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "dual_delta": {
            "description": "Change in the option price for a unit move in the strike. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "dual_gamma": {
            "description": "Second derivative of the option price with respect to the strike. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "epsilon": {
            "description": "Change in the option price for a one point move in the dividend yield. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "exchange": {
            "description": "Exchange code of the venue that executed the trade.",
            "type": "integer"
          },
          "extended_conditions": {
            "description": "Extended sale condition codes; empty when none apply.",
            "items": {
              "description": "Condition code.",
              "type": "integer"
            },
            "type": "array"
          },
          "gamma": {
            "description": "Change in delta for a $1 move in the underlying. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "implied_volatility": {
            "description": "Implied volatility as a decimal (0.18 = 18%).",
            "type": [
              "number",
              "null"
            ]
          },
          "lambda": {
            "description": "Leverage: percentage change in the option price per percentage change in the underlying. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "option_symbol": {
            "description": "OCC option symbol of the contract: root padded to six characters, expiration YYMMDD, C or P and the strike in thousandths over eight digits.",
            "type": "string"
          },
          "price": {
            "description": "Trade price per contract in dollars.",
            "type": "number"
          },
          "rho": {
            "description": "Change in the option price for a one point move in the interest rate. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "sequence": {
            "description": "Sequence number of the trade in the consolidated feed.",
            "type": "integer"
          },
          "size": {
            "description": "Contracts traded.",
            "type": "integer"
          },
          "speed": {
            "description": "Change in gamma for a $1 move in the underlying. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "theta": {
            "description": "Time decay: change in the option price per calendar day. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "timestamp": {
            "description": "Time of the trade. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "ultima": {
            "description": "Change in vomma for a one point move in implied volatility. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "underlying_price": {
            "description": "Underlying price used by the model.",
            "type": [
              "number",
              "null"
            ]
          },
          "underlying_timestamp": {
            "description": "Time of the underlying price used. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": [
              "integer",
              "null"
            ]
          },
          "vanna": {
            "description": "Change in delta for a one point move in implied volatility. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "vega": {
            "description": "Change in the option price for a one point move in implied volatility. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "vera": {
            "description": "Change in rho for a one point move in implied volatility. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "veta": {
            "description": "Change in vega per day. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "vomma": {
            "description": "Change in vega for a one point move in implied volatility. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          },
          "zomma": {
            "description": "Change in gamma for a one point move in implied volatility. Null when not part of the requested order or outside the regular session.",
            "type": [
              "number",
              "null"
            ]
          }
        },
        "required": [
          "option_symbol",
          "timestamp",
          "sequence",
          "price",
          "size",
          "exchange",
          "condition",
          "extended_conditions",
          "delta",
          "theta",
          "vega",
          "rho",
          "epsilon",
          "lambda",
          "gamma",
          "vanna",
          "charm",
          "vomma",
          "veta",
          "vera",
          "speed",
          "zomma",
          "color",
          "ultima",
          "d1",
          "d2",
          "dual_delta",
          "dual_gamma",
          "implied_volatility",
          "underlying_timestamp",
          "underlying_price"
        ],
        "type": "object"
      },
      "OptionsContractTradeQuotesRow": {
        "additionalProperties": false,
        "description": "One trade with its prevailing quote.",
        "properties": {
          "ask": {
            "description": "Best offer price.",
            "type": [
              "number",
              "null"
            ]
          },
          "ask_condition": {
            "description": "Quote condition code of the offer.",
            "type": [
              "integer",
              "null"
            ]
          },
          "ask_exchange": {
            "description": "Exchange code of the best offer.",
            "type": [
              "integer",
              "null"
            ]
          },
          "ask_size": {
            "description": "Contracts offered.",
            "type": [
              "integer",
              "null"
            ]
          },
          "bid": {
            "description": "Best bid price.",
            "type": [
              "number",
              "null"
            ]
          },
          "bid_condition": {
            "description": "Quote condition code of the bid.",
            "type": [
              "integer",
              "null"
            ]
          },
          "bid_exchange": {
            "description": "Exchange code of the best bid.",
            "type": [
              "integer",
              "null"
            ]
          },
          "bid_size": {
            "description": "Contracts bid.",
            "type": [
              "integer",
              "null"
            ]
          },
          "condition": {
            "description": "Sale condition code.",
            "type": "integer"
          },
          "exchange": {
            "description": "Exchange code of the venue that executed the trade.",
            "type": "integer"
          },
          "extended_conditions": {
            "description": "Extended sale condition codes; empty when none apply.",
            "items": {
              "description": "Condition code.",
              "type": "integer"
            },
            "type": "array"
          },
          "option_symbol": {
            "description": "OCC option symbol of the contract: root padded to six characters, expiration YYMMDD, C or P and the strike in thousandths over eight digits.",
            "type": "string"
          },
          "price": {
            "description": "Trade price per contract in dollars.",
            "type": "number"
          },
          "quote_timestamp": {
            "description": "Time of the quote paired with the trade. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": [
              "integer",
              "null"
            ]
          },
          "sequence": {
            "description": "Sequence number of the trade in the consolidated feed.",
            "type": "integer"
          },
          "size": {
            "description": "Contracts traded.",
            "type": "integer"
          },
          "timestamp": {
            "description": "Time of the trade. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          }
        },
        "required": [
          "option_symbol",
          "timestamp",
          "sequence",
          "price",
          "size",
          "exchange",
          "condition",
          "extended_conditions",
          "quote_timestamp",
          "bid",
          "bid_size",
          "bid_exchange",
          "bid_condition",
          "ask",
          "ask_size",
          "ask_exchange",
          "ask_condition"
        ],
        "type": "object"
      },
      "OptionsContractTradesRow": {
        "additionalProperties": false,
        "description": "One trade of the contract.",
        "properties": {
          "condition": {
            "description": "Sale condition code.",
            "type": "integer"
          },
          "exchange": {
            "description": "Exchange code of the venue that executed the trade.",
            "type": "integer"
          },
          "extended_conditions": {
            "description": "Extended sale condition codes; empty when none apply.",
            "items": {
              "description": "Condition code.",
              "type": "integer"
            },
            "type": "array"
          },
          "option_symbol": {
            "description": "OCC option symbol of the contract: root padded to six characters, expiration YYMMDD, C or P and the strike in thousandths over eight digits.",
            "type": "string"
          },
          "price": {
            "description": "Trade price per contract in dollars.",
            "type": "number"
          },
          "sequence": {
            "description": "Sequence number of the trade in the consolidated feed.",
            "type": "integer"
          },
          "size": {
            "description": "Contracts traded.",
            "type": "integer"
          },
          "timestamp": {
            "description": "Time of the trade. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          }
        },
        "required": [
          "option_symbol",
          "timestamp",
          "sequence",
          "price",
          "size",
          "exchange",
          "condition",
          "extended_conditions"
        ],
        "type": "object"
      },
      "OptionsContractsRow": {
        "additionalProperties": false,
        "description": "One contract.",
        "properties": {
          "contract_type": {
            "description": "Call or put.",
            "enum": [
              "call",
              "put"
            ],
            "type": "string"
          },
          "date_of_expiry": {
            "description": "Expiration date.",
            "format": "date",
            "type": "string"
          },
          "option_symbol": {
            "description": "OCC option symbol of the contract: root padded to six characters, expiration YYMMDD, C or P and the strike in thousandths over eight digits.",
            "type": "string"
          },
          "strike": {
            "description": "Strike price in dollars.",
            "type": "number"
          },
          "underlying_symbol": {
            "description": "Option root of the contract.",
            "type": "string"
          }
        },
        "required": [
          "option_symbol",
          "underlying_symbol",
          "date_of_expiry",
          "strike",
          "contract_type"
        ],
        "type": "object"
      },
      "OptionsExpirationsRow": {
        "additionalProperties": false,
        "description": "One listed expiration.",
        "properties": {
          "atm_implied_volatility": {
            "description": "At-the-money implied volatility.",
            "type": [
              "number",
              "null"
            ]
          },
          "contracts": {
            "description": "Listed contracts.",
            "type": "integer"
          },
          "date_of_expiry": {
            "description": "Expiration date.",
            "format": "date",
            "type": "string"
          },
          "days_to_expiry": {
            "description": "Calendar days from the trading date to expiration.",
            "type": "integer"
          },
          "expected_move": {
            "description": "Expected move in index points or dollars.",
            "type": [
              "number",
              "null"
            ]
          },
          "expired": {
            "description": "The expiration time has passed.",
            "type": "boolean"
          },
          "expires_at": {
            "description": "Expiration instant. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": [
              "integer",
              "null"
            ]
          },
          "forward": {
            "description": "Forward price implied by the chain.",
            "type": [
              "number",
              "null"
            ]
          },
          "forward_method": {
            "description": "How the forward was obtained.",
            "enum": [
              "parity",
              "interpolated",
              "carry",
              "carried",
              null
            ],
            "type": [
              "string",
              "null"
            ]
          },
          "open_interest_call": {
            "description": "Call open interest.",
            "type": "integer"
          },
          "open_interest_put": {
            "description": "Put open interest.",
            "type": "integer"
          },
          "settlement": {
            "description": "Settlement style.",
            "enum": [
              "am",
              "pm"
            ],
            "type": "string"
          },
          "strike_max": {
            "description": "Highest listed strike.",
            "type": [
              "number",
              "null"
            ]
          },
          "strike_min": {
            "description": "Lowest listed strike.",
            "type": [
              "number",
              "null"
            ]
          },
          "strike_step": {
            "description": "Strike spacing near the money.",
            "type": [
              "number",
              "null"
            ]
          },
          "underlying_symbol": {
            "description": "Option root of this expiration.",
            "type": "string"
          },
          "volume_call": {
            "description": "Call volume today.",
            "type": "integer"
          },
          "volume_put": {
            "description": "Put volume today.",
            "type": "integer"
          }
        },
        "required": [
          "date_of_expiry",
          "underlying_symbol",
          "days_to_expiry",
          "settlement",
          "expires_at",
          "expired",
          "contracts",
          "open_interest_call",
          "open_interest_put",
          "volume_call",
          "volume_put",
          "forward",
          "forward_method",
          "atm_implied_volatility",
          "expected_move",
          "strike_min",
          "strike_max",
          "strike_step"
        ],
        "type": "object"
      },
      "OptionsExposureByExpirationRow": {
        "additionalProperties": false,
        "description": "Modeled exposure by expiration.",
        "properties": {
          "expirations": {
            "description": "Listed expirations, soonest first.",
            "items": {
              "additionalProperties": false,
              "description": "One expiration.",
              "properties": {
                "call_exposure": {
                  "description": "Modeled exposure of the calls.",
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "call_open_interest": {
                  "description": "Call open interest.",
                  "type": "integer"
                },
                "date_of_expiry": {
                  "description": "Expiration date.",
                  "format": "date",
                  "type": "string"
                },
                "days_to_expiry": {
                  "description": "Calendar days from the trading date.",
                  "type": "integer"
                },
                "net_exposure": {
                  "description": "Call plus put exposure.",
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "put_exposure": {
                  "description": "Modeled exposure of the puts.",
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "put_open_interest": {
                  "description": "Put open interest.",
                  "type": "integer"
                },
                "roots": {
                  "description": "Option roots that expire on that date.",
                  "items": {
                    "type": "string"
                  },
                  "type": "array"
                }
              },
              "required": [
                "call_exposure",
                "call_open_interest",
                "date_of_expiry",
                "days_to_expiry",
                "net_exposure",
                "put_exposure",
                "put_open_interest",
                "roots"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "greek": {
            "description": "The measure: gamma, delta, vanna, charm or the heat map metric.",
            "type": "string"
          },
          "model": {
            "description": "Dealer positioning model.",
            "enum": [
              "classic_oi",
              "flow_adjusted"
            ],
            "type": "string"
          },
          "perspective": {
            "description": "dealer or customer (customer negates the values).",
            "enum": [
              "dealer",
              "customer"
            ],
            "type": "string"
          },
          "positioning_model": {
            "description": "Name and version of the positioning assumption, for example oi_signed_proxy-v1.",
            "type": "string"
          },
          "roots": {
            "description": "Option roots included.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "session": {
            "description": "Session valued.",
            "enum": [
              "rth",
              "gth",
              "curb",
              "all"
            ],
            "type": "string"
          },
          "totals": {
            "additionalProperties": false,
            "description": "Totals over the selection.",
            "properties": {
              "absolute": {
                "description": "Sum of absolute call and put exposure.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "call": {
                "description": "Sum of call exposure.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "net": {
                "description": "Call plus put exposure.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "put": {
                "description": "Sum of put exposure.",
                "type": [
                  "number",
                  "null"
                ]
              }
            },
            "required": [
              "absolute",
              "call",
              "net",
              "put"
            ],
            "type": "object"
          },
          "trading_date": {
            "description": "Trading date valued.",
            "format": "date",
            "type": "string"
          },
          "underlying_symbol": {
            "description": "The requested underlying.",
            "type": "string"
          },
          "unit": {
            "description": "Scale of the values.",
            "enum": [
              "per_percent",
              "per_dollar",
              "raw"
            ],
            "type": "string"
          },
          "unit_label": {
            "description": "What one unit is, for example usd_per_pct: dollars of dealer hedging per 1% move.",
            "type": "string"
          },
          "valuation": {
            "additionalProperties": false,
            "description": "What the snapshot was valued on.",
            "properties": {
              "chain_timestamp": {
                "description": "Time of the option chain the valuation used. Unix epoch milliseconds (UTC).",
                "format": "unix-ms",
                "type": [
                  "integer",
                  "null"
                ]
              },
              "open_interest_date": {
                "description": "Date of the open interest the positioning is based on.",
                "format": "date",
                "type": [
                  "string",
                  "null"
                ]
              },
              "risk_free_rate": {
                "description": "Continuously compounded risk-free rate used.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "timestamp": {
                "description": "Valuation time. Unix epoch milliseconds (UTC).",
                "format": "unix-ms",
                "type": [
                  "integer",
                  "null"
                ]
              },
              "underlying_price": {
                "description": "Underlying price used.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "underlying_stale": {
                "description": "The underlying price is older than the freshness limit.",
                "type": "boolean"
              },
              "underlying_timestamp": {
                "description": "Time of the underlying price. Unix epoch milliseconds (UTC).",
                "format": "unix-ms",
                "type": [
                  "integer",
                  "null"
                ]
              }
            },
            "required": [
              "chain_timestamp",
              "open_interest_date",
              "risk_free_rate",
              "timestamp",
              "underlying_price",
              "underlying_stale",
              "underlying_timestamp"
            ],
            "type": "object"
          }
        },
        "required": [
          "expirations",
          "greek",
          "model",
          "perspective",
          "positioning_model",
          "roots",
          "session",
          "totals",
          "trading_date",
          "underlying_symbol",
          "unit",
          "unit_label",
          "valuation"
        ],
        "type": "object"
      },
      "OptionsExposureByStrikeRow": {
        "additionalProperties": false,
        "description": "Modeled exposure by strike.",
        "properties": {
          "greek": {
            "description": "The measure: gamma, delta, vanna, charm or the heat map metric.",
            "type": "string"
          },
          "levels": {
            "additionalProperties": false,
            "description": "Key strikes of the selection.",
            "properties": {
              "call_wall": {
                "description": "Strike of the largest positive call exposure.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "largest_absolute_strike": {
                "description": "Strike of the largest absolute call plus put exposure.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "major_negative": {
                "description": "Strike of the most negative net exposure.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "major_positive": {
                "description": "Strike of the largest positive net exposure.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "put_wall": {
                "description": "Strike of the largest negative put exposure.",
                "type": [
                  "number",
                  "null"
                ]
              }
            },
            "required": [
              "call_wall",
              "largest_absolute_strike",
              "major_negative",
              "major_positive",
              "put_wall"
            ],
            "type": "object"
          },
          "model": {
            "description": "Dealer positioning model.",
            "enum": [
              "classic_oi",
              "flow_adjusted"
            ],
            "type": "string"
          },
          "perspective": {
            "description": "dealer or customer (customer negates the values).",
            "enum": [
              "dealer",
              "customer"
            ],
            "type": "string"
          },
          "positioning_model": {
            "description": "Name and version of the positioning assumption, for example oi_signed_proxy-v1.",
            "type": "string"
          },
          "roots": {
            "description": "Option roots included.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "session": {
            "description": "Session valued.",
            "enum": [
              "rth",
              "gth",
              "curb",
              "all"
            ],
            "type": "string"
          },
          "strikes": {
            "description": "Strikes, ascending.",
            "items": {
              "additionalProperties": false,
              "description": "One strike.",
              "properties": {
                "call_exposure": {
                  "description": "Modeled exposure of the calls.",
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "call_open_interest": {
                  "description": "Call open interest.",
                  "type": "integer"
                },
                "net_exposure": {
                  "description": "Call plus put exposure.",
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "put_exposure": {
                  "description": "Modeled exposure of the puts.",
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "put_open_interest": {
                  "description": "Put open interest.",
                  "type": "integer"
                },
                "strike": {
                  "description": "Strike in dollars.",
                  "type": "number"
                }
              },
              "required": [
                "call_exposure",
                "call_open_interest",
                "net_exposure",
                "put_exposure",
                "put_open_interest",
                "strike"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "totals": {
            "additionalProperties": false,
            "description": "Totals over the selection.",
            "properties": {
              "absolute": {
                "description": "Sum of absolute call and put exposure.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "call": {
                "description": "Sum of call exposure.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "net": {
                "description": "Call plus put exposure.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "put": {
                "description": "Sum of put exposure.",
                "type": [
                  "number",
                  "null"
                ]
              }
            },
            "required": [
              "absolute",
              "call",
              "net",
              "put"
            ],
            "type": "object"
          },
          "trading_date": {
            "description": "Trading date valued.",
            "format": "date",
            "type": "string"
          },
          "underlying_symbol": {
            "description": "The requested underlying.",
            "type": "string"
          },
          "unit": {
            "description": "Scale of the values.",
            "enum": [
              "per_percent",
              "per_dollar",
              "raw"
            ],
            "type": "string"
          },
          "unit_label": {
            "description": "What one unit is, for example usd_per_pct: dollars of dealer hedging per 1% move.",
            "type": "string"
          },
          "valuation": {
            "additionalProperties": false,
            "description": "What the snapshot was valued on.",
            "properties": {
              "chain_timestamp": {
                "description": "Time of the option chain the valuation used. Unix epoch milliseconds (UTC).",
                "format": "unix-ms",
                "type": [
                  "integer",
                  "null"
                ]
              },
              "open_interest_date": {
                "description": "Date of the open interest the positioning is based on.",
                "format": "date",
                "type": [
                  "string",
                  "null"
                ]
              },
              "risk_free_rate": {
                "description": "Continuously compounded risk-free rate used.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "timestamp": {
                "description": "Valuation time. Unix epoch milliseconds (UTC).",
                "format": "unix-ms",
                "type": [
                  "integer",
                  "null"
                ]
              },
              "underlying_price": {
                "description": "Underlying price used.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "underlying_stale": {
                "description": "The underlying price is older than the freshness limit.",
                "type": "boolean"
              },
              "underlying_timestamp": {
                "description": "Time of the underlying price. Unix epoch milliseconds (UTC).",
                "format": "unix-ms",
                "type": [
                  "integer",
                  "null"
                ]
              }
            },
            "required": [
              "chain_timestamp",
              "open_interest_date",
              "risk_free_rate",
              "timestamp",
              "underlying_price",
              "underlying_stale",
              "underlying_timestamp"
            ],
            "type": "object"
          }
        },
        "required": [
          "greek",
          "levels",
          "model",
          "perspective",
          "positioning_model",
          "roots",
          "session",
          "strikes",
          "totals",
          "trading_date",
          "underlying_symbol",
          "unit",
          "unit_label",
          "valuation"
        ],
        "type": "object"
      },
      "OptionsExposureForecastRow": {
        "additionalProperties": false,
        "description": "Modeled levels repriced at intraday horizons.",
        "properties": {
          "cone_model": {
            "additionalProperties": false,
            "description": "How the cone is built.",
            "properties": {
              "implied_volatility": {
                "description": "Implied volatility used.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "implied_volatility_expiry": {
                "description": "Expiration the volatility is taken from.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "method": {
                "description": "Method name.",
                "type": "string"
              },
              "rth_variance_share": {
                "description": "Share of the day's variance in the regular session.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "total_variance": {
                "description": "Total variance to the close.",
                "type": [
                  "number",
                  "null"
                ]
              }
            },
            "required": [
              "implied_volatility",
              "implied_volatility_expiry",
              "method",
              "rth_variance_share",
              "total_variance"
            ],
            "type": "object"
          },
          "empirical": {
            "additionalProperties": false,
            "description": "History behind the hold statistics.",
            "properties": {
              "method": {
                "description": "Method name.",
                "type": "string"
              },
              "move_sessions": {
                "description": "Sessions behind the typical moves.",
                "type": "integer"
              },
              "state_sessions": {
                "description": "Sessions behind the state statistics.",
                "type": "integer"
              }
            },
            "required": [
              "method",
              "move_sessions",
              "state_sessions"
            ],
            "type": "object"
          },
          "horizons": {
            "description": "One entry per horizon.",
            "items": {
              "additionalProperties": false,
              "description": "Levels at a horizon.",
              "properties": {
                "call_wall": {
                  "description": "Call wall.",
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "cone": {
                  "additionalProperties": false,
                  "description": "Range of the underlying price at the horizon from its implied volatility.",
                  "properties": {
                    "one_sigma": {
                      "description": "Lower and upper bound at one standard deviation.",
                      "items": {
                        "type": "number"
                      },
                      "type": "array"
                    },
                    "two_sigma": {
                      "description": "Lower and upper bound at two standard deviations.",
                      "items": {
                        "type": "number"
                      },
                      "type": "array"
                    }
                  },
                  "required": [
                    "one_sigma",
                    "two_sigma"
                  ],
                  "type": [
                    "object",
                    "null"
                  ]
                },
                "expired_contracts": {
                  "description": "Contracts that expire before the horizon and are removed.",
                  "type": "integer"
                },
                "gamma_flip": {
                  "description": "Gamma flip repriced to the horizon (model-derived).",
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "hold": {
                  "additionalProperties": false,
                  "description": "How often the levels held historically.",
                  "properties": {
                    "band": {
                      "description": "Confidence band.",
                      "items": {
                        "type": "number"
                      },
                      "type": "array"
                    },
                    "rate": {
                      "description": "Fraction of sessions.",
                      "type": "number"
                    },
                    "samples": {
                      "description": "Sessions observed.",
                      "type": "integer"
                    },
                    "strength": {
                      "description": "Strength of the evidence.",
                      "enum": [
                        "weak",
                        "moderate",
                        "strong"
                      ],
                      "type": "string"
                    }
                  },
                  "required": [
                    "band",
                    "rate",
                    "samples",
                    "strength"
                  ],
                  "type": [
                    "object",
                    "null"
                  ]
                },
                "hold_reason": {
                  "description": "Why no hold statistic is available, for example insufficient_history.",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "label": {
                  "description": "Horizon: 30, 60, 90, 120 or close.",
                  "type": "string"
                },
                "largest_absolute_gamma_strike": {
                  "description": "Strike of the largest absolute gamma.",
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "largest_cell_strike": {
                  "description": "Strike of the largest strike-by-expiration cell.",
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "minutes": {
                  "description": "Minutes ahead of the valuation.",
                  "type": "integer"
                },
                "net_exposure_at_underlying_price": {
                  "description": "Net modeled exposure at the current underlying price.",
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "put_wall": {
                  "description": "Put wall.",
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "timestamp": {
                  "description": "Time of the horizon. Unix epoch milliseconds (UTC).",
                  "format": "unix-ms",
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "typical_move": {
                  "additionalProperties": false,
                  "description": "Historical typical move to this horizon.",
                  "properties": {
                    "percent": {
                      "description": "Percent.",
                      "type": "number"
                    },
                    "points": {
                      "description": "Points.",
                      "type": "number"
                    },
                    "samples": {
                      "description": "Sessions observed.",
                      "type": "integer"
                    }
                  },
                  "required": [
                    "percent",
                    "points",
                    "samples"
                  ],
                  "type": [
                    "object",
                    "null"
                  ]
                }
              },
              "required": [
                "call_wall",
                "cone",
                "expired_contracts",
                "gamma_flip",
                "hold",
                "hold_reason",
                "label",
                "largest_absolute_gamma_strike",
                "largest_cell_strike",
                "minutes",
                "net_exposure_at_underlying_price",
                "put_wall",
                "timestamp",
                "typical_move"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "levels_now": {
            "additionalProperties": false,
            "description": "The levels at the valuation time.",
            "properties": {
              "call_wall": {
                "description": "Call wall.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "gamma_flip": {
                "description": "Gamma flip.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "largest_absolute_gamma_strike": {
                "description": "Largest absolute gamma strike.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "largest_cell_strike": {
                "description": "Largest cell strike.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "put_wall": {
                "description": "Put wall.",
                "type": [
                  "number",
                  "null"
                ]
              }
            },
            "required": [
              "call_wall",
              "gamma_flip",
              "largest_absolute_gamma_strike",
              "largest_cell_strike",
              "put_wall"
            ],
            "type": "object"
          },
          "session": {
            "description": "Session.",
            "enum": [
              "rth",
              "gth",
              "curb",
              "all"
            ],
            "type": "string"
          },
          "state_hint": {
            "additionalProperties": false,
            "description": "A heuristic read of the session. Not calibrated and not a prediction.",
            "properties": {
              "calibrated": {
                "description": "Always false: the hint is not calibrated.",
                "type": "boolean"
              },
              "label": {
                "description": "pin, grind, volatile or undetermined.",
                "enum": [
                  "pin",
                  "grind",
                  "volatile",
                  "undetermined"
                ],
                "type": "string"
              },
              "reasons": {
                "description": "What led to the label.",
                "items": {
                  "type": "string"
                },
                "type": "array"
              }
            },
            "required": [
              "calibrated",
              "label",
              "reasons"
            ],
            "type": "object"
          },
          "trading_date": {
            "description": "Trading date.",
            "format": "date",
            "type": "string"
          },
          "underlying_price": {
            "description": "Current underlying price.",
            "type": [
              "number",
              "null"
            ]
          },
          "underlying_symbol": {
            "description": "The requested underlying.",
            "type": "string"
          },
          "valuation": {
            "additionalProperties": false,
            "description": "What the snapshot was valued on.",
            "properties": {
              "chain_timestamp": {
                "description": "Time of the option chain the valuation used. Unix epoch milliseconds (UTC).",
                "format": "unix-ms",
                "type": [
                  "integer",
                  "null"
                ]
              },
              "open_interest_date": {
                "description": "Date of the open interest the positioning is based on.",
                "format": "date",
                "type": [
                  "string",
                  "null"
                ]
              },
              "risk_free_rate": {
                "description": "Continuously compounded risk-free rate used.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "timestamp": {
                "description": "Valuation time. Unix epoch milliseconds (UTC).",
                "format": "unix-ms",
                "type": [
                  "integer",
                  "null"
                ]
              },
              "underlying_price": {
                "description": "Underlying price used.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "underlying_stale": {
                "description": "The underlying price is older than the freshness limit.",
                "type": "boolean"
              },
              "underlying_timestamp": {
                "description": "Time of the underlying price. Unix epoch milliseconds (UTC).",
                "format": "unix-ms",
                "type": [
                  "integer",
                  "null"
                ]
              }
            },
            "required": [
              "chain_timestamp",
              "open_interest_date",
              "risk_free_rate",
              "timestamp",
              "underlying_price",
              "underlying_stale",
              "underlying_timestamp"
            ],
            "type": "object"
          }
        },
        "required": [
          "cone_model",
          "empirical",
          "horizons",
          "levels_now",
          "session",
          "state_hint",
          "trading_date",
          "underlying_price",
          "underlying_symbol",
          "valuation"
        ],
        "type": "object"
      },
      "OptionsExposureHeatmapRow": {
        "additionalProperties": false,
        "description": "A strike by expiration grid.",
        "properties": {
          "cells": {
            "description": "Cells with a listed contract.",
            "items": {
              "additionalProperties": false,
              "description": "One cell.",
              "properties": {
                "date_of_expiry": {
                  "description": "Expiration.",
                  "format": "date",
                  "type": "string"
                },
                "days_to_expiry": {
                  "description": "Days from the trading date.",
                  "type": "integer"
                },
                "strike": {
                  "description": "Strike.",
                  "type": "number"
                },
                "value": {
                  "description": "Cell value.",
                  "type": "number"
                }
              },
              "required": [
                "date_of_expiry",
                "days_to_expiry",
                "strike",
                "value"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "expiration_window": {
            "additionalProperties": false,
            "description": "The expirations shown.",
            "properties": {
              "count": {
                "description": "Expirations shown.",
                "type": "integer"
              },
              "offset": {
                "description": "Index of the first expiration shown.",
                "type": "integer"
              },
              "total_expirations": {
                "description": "Expirations selected.",
                "type": "integer"
              }
            },
            "required": [
              "count",
              "offset",
              "total_expirations"
            ],
            "type": "object"
          },
          "greek": {
            "description": "The measure: gamma, delta, vanna, charm or the heat map metric.",
            "type": "string"
          },
          "largest_cell": {
            "additionalProperties": false,
            "description": "The cell with the largest absolute value.",
            "properties": {
              "date_of_expiry": {
                "description": "Expiration.",
                "format": "date",
                "type": "string"
              },
              "strike": {
                "description": "Strike.",
                "type": "number"
              },
              "value": {
                "description": "Value.",
                "type": "number"
              }
            },
            "required": [
              "date_of_expiry",
              "strike",
              "value"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "leg": {
            "description": "Which leg the cells show.",
            "enum": [
              "net",
              "call",
              "put"
            ],
            "type": "string"
          },
          "maximum": {
            "description": "Largest cell value.",
            "type": [
              "number",
              "null"
            ]
          },
          "metric": {
            "description": "The cell measure.",
            "type": "string"
          },
          "minimum": {
            "description": "Smallest cell value.",
            "type": [
              "number",
              "null"
            ]
          },
          "model": {
            "description": "Dealer positioning model.",
            "enum": [
              "classic_oi",
              "flow_adjusted"
            ],
            "type": "string"
          },
          "perspective": {
            "description": "dealer or customer (customer negates the values).",
            "enum": [
              "dealer",
              "customer"
            ],
            "type": "string"
          },
          "positioning_model": {
            "description": "Name and version of the positioning assumption, for example oi_signed_proxy-v1.",
            "type": "string"
          },
          "roots": {
            "description": "Option roots included.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "session": {
            "description": "Session valued.",
            "enum": [
              "rth",
              "gth",
              "curb",
              "all"
            ],
            "type": "string"
          },
          "strike_range": {
            "additionalProperties": false,
            "description": "The listed strikes.",
            "properties": {
              "highest_strike": {
                "description": "Highest listed strike.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "lowest_strike": {
                "description": "Lowest listed strike.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "total_strikes": {
                "description": "Listed strikes in the selection.",
                "type": "integer"
              }
            },
            "required": [
              "highest_strike",
              "lowest_strike",
              "total_strikes"
            ],
            "type": "object"
          },
          "trading_date": {
            "description": "Trading date valued.",
            "format": "date",
            "type": "string"
          },
          "underlying_symbol": {
            "description": "The requested underlying.",
            "type": "string"
          },
          "unit": {
            "description": "Scale of the values.",
            "enum": [
              "per_percent",
              "per_dollar",
              "raw"
            ],
            "type": "string"
          },
          "unit_label": {
            "description": "What one unit is, for example usd_per_pct: dollars of dealer hedging per 1% move.",
            "type": "string"
          },
          "valuation": {
            "additionalProperties": false,
            "description": "What the snapshot was valued on.",
            "properties": {
              "chain_timestamp": {
                "description": "Time of the option chain the valuation used. Unix epoch milliseconds (UTC).",
                "format": "unix-ms",
                "type": [
                  "integer",
                  "null"
                ]
              },
              "open_interest_date": {
                "description": "Date of the open interest the positioning is based on.",
                "format": "date",
                "type": [
                  "string",
                  "null"
                ]
              },
              "risk_free_rate": {
                "description": "Continuously compounded risk-free rate used.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "timestamp": {
                "description": "Valuation time. Unix epoch milliseconds (UTC).",
                "format": "unix-ms",
                "type": [
                  "integer",
                  "null"
                ]
              },
              "underlying_price": {
                "description": "Underlying price used.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "underlying_stale": {
                "description": "The underlying price is older than the freshness limit.",
                "type": "boolean"
              },
              "underlying_timestamp": {
                "description": "Time of the underlying price. Unix epoch milliseconds (UTC).",
                "format": "unix-ms",
                "type": [
                  "integer",
                  "null"
                ]
              }
            },
            "required": [
              "chain_timestamp",
              "open_interest_date",
              "risk_free_rate",
              "timestamp",
              "underlying_price",
              "underlying_stale",
              "underlying_timestamp"
            ],
            "type": "object"
          }
        },
        "required": [
          "cells",
          "expiration_window",
          "greek",
          "largest_cell",
          "leg",
          "maximum",
          "metric",
          "minimum",
          "model",
          "perspective",
          "positioning_model",
          "roots",
          "session",
          "strike_range",
          "trading_date",
          "underlying_symbol",
          "unit",
          "unit_label",
          "valuation"
        ],
        "type": "object"
      },
      "OptionsExposureHistoryRow": {
        "additionalProperties": false,
        "description": "Net modeled gamma exposure at one step.",
        "properties": {
          "available": {
            "description": "The retained inputs supported a valuation at this step.",
            "type": "boolean"
          },
          "chain_timestamp": {
            "description": "Time of the retained option chain used. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": [
              "integer",
              "null"
            ]
          },
          "net_exposure": {
            "description": "Net modeled dealer gamma exposure in dollars per 1% move; null when unavailable.",
            "type": [
              "number",
              "null"
            ]
          },
          "reason": {
            "description": "Why the step could not be valued.",
            "type": [
              "string",
              "null"
            ]
          },
          "timestamp": {
            "description": "Time of the step. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "underlying_timestamp": {
            "description": "Time of the retained underlying price used. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": [
              "integer",
              "null"
            ]
          }
        },
        "required": [
          "available",
          "chain_timestamp",
          "net_exposure",
          "reason",
          "timestamp",
          "underlying_timestamp"
        ],
        "type": "object"
      },
      "OptionsExposureIntervalsRow": {
        "additionalProperties": false,
        "description": "Modeled exposure through a session.",
        "properties": {
          "buckets_expected": {
            "description": "Buckets in the session.",
            "type": "integer"
          },
          "buckets_filled": {
            "description": "Buckets that could be valued.",
            "type": "integer"
          },
          "cells": {
            "description": "Exposure by time and strike; unvalued cells are omitted.",
            "items": {
              "additionalProperties": false,
              "description": "One cell.",
              "properties": {
                "strike": {
                  "description": "Strike.",
                  "type": "number"
                },
                "timestamp": {
                  "description": "Valuation time (the end of the bucket). Unix epoch milliseconds (UTC).",
                  "format": "unix-ms",
                  "type": "integer"
                },
                "value": {
                  "description": "Exposure (or its change).",
                  "type": "number"
                }
              },
              "required": [
                "strike",
                "timestamp",
                "value"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "greek": {
            "description": "The measure: gamma, delta, vanna, charm or the heat map metric.",
            "type": "string"
          },
          "interval": {
            "description": "Bucket length.",
            "enum": [
              "1m",
              "5m",
              "15m",
              "30m",
              "1h"
            ],
            "type": "string"
          },
          "max_absolute_value": {
            "description": "Largest absolute cell value.",
            "type": [
              "number",
              "null"
            ]
          },
          "mode": {
            "description": "value or change.",
            "enum": [
              "value",
              "change"
            ],
            "type": "string"
          },
          "model": {
            "description": "Dealer positioning model.",
            "enum": [
              "classic_oi",
              "flow_adjusted"
            ],
            "type": "string"
          },
          "perspective": {
            "description": "dealer or customer (customer negates the values).",
            "enum": [
              "dealer",
              "customer"
            ],
            "type": "string"
          },
          "positioning_model": {
            "description": "Name and version of the positioning assumption, for example oi_signed_proxy-v1.",
            "type": "string"
          },
          "prices": {
            "description": "Underlying price at each valuation.",
            "items": {
              "additionalProperties": false,
              "description": "One valuation.",
              "properties": {
                "timestamp": {
                  "description": "Valuation time (the end of the bucket). Unix epoch milliseconds (UTC).",
                  "format": "unix-ms",
                  "type": "integer"
                },
                "underlying_price": {
                  "description": "Underlying price.",
                  "type": "number"
                }
              },
              "required": [
                "timestamp",
                "underlying_price"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "roots": {
            "description": "Option roots included.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "session": {
            "description": "Session valued.",
            "enum": [
              "rth",
              "gth",
              "curb",
              "all"
            ],
            "type": "string"
          },
          "session_high": {
            "description": "Highest underlying price of the session.",
            "type": [
              "number",
              "null"
            ]
          },
          "session_low": {
            "description": "Lowest underlying price of the session.",
            "type": [
              "number",
              "null"
            ]
          },
          "strikes": {
            "description": "Strikes covered, ascending.",
            "items": {
              "type": "number"
            },
            "type": "array"
          },
          "trading_date": {
            "description": "Trading date valued.",
            "format": "date",
            "type": "string"
          },
          "underlying_symbol": {
            "description": "The requested underlying.",
            "type": "string"
          },
          "unit": {
            "description": "Scale of the values.",
            "enum": [
              "per_percent",
              "per_dollar",
              "raw"
            ],
            "type": "string"
          },
          "unit_label": {
            "description": "What one unit is, for example usd_per_pct: dollars of dealer hedging per 1% move.",
            "type": "string"
          },
          "valuation": {
            "additionalProperties": false,
            "description": "What the snapshot was valued on.",
            "properties": {
              "chain_timestamp": {
                "description": "Time of the option chain the valuation used. Unix epoch milliseconds (UTC).",
                "format": "unix-ms",
                "type": [
                  "integer",
                  "null"
                ]
              },
              "open_interest_date": {
                "description": "Date of the open interest the positioning is based on.",
                "format": "date",
                "type": [
                  "string",
                  "null"
                ]
              },
              "risk_free_rate": {
                "description": "Continuously compounded risk-free rate used.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "timestamp": {
                "description": "Valuation time. Unix epoch milliseconds (UTC).",
                "format": "unix-ms",
                "type": [
                  "integer",
                  "null"
                ]
              },
              "underlying_price": {
                "description": "Underlying price used.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "underlying_stale": {
                "description": "The underlying price is older than the freshness limit.",
                "type": "boolean"
              },
              "underlying_timestamp": {
                "description": "Time of the underlying price. Unix epoch milliseconds (UTC).",
                "format": "unix-ms",
                "type": [
                  "integer",
                  "null"
                ]
              }
            },
            "required": [
              "chain_timestamp",
              "open_interest_date",
              "risk_free_rate",
              "timestamp",
              "underlying_price",
              "underlying_stale",
              "underlying_timestamp"
            ],
            "type": "object"
          }
        },
        "required": [
          "buckets_expected",
          "buckets_filled",
          "cells",
          "greek",
          "interval",
          "max_absolute_value",
          "mode",
          "model",
          "perspective",
          "positioning_model",
          "prices",
          "roots",
          "session",
          "session_high",
          "session_low",
          "strikes",
          "trading_date",
          "underlying_symbol",
          "unit",
          "unit_label",
          "valuation"
        ],
        "type": "object"
      },
      "OptionsExposureProfileRow": {
        "additionalProperties": false,
        "description": "Modeled exposure over a sweep of underlying prices.",
        "properties": {
          "greek": {
            "description": "The measure: gamma, delta, vanna, charm or the heat map metric.",
            "type": "string"
          },
          "model": {
            "description": "Dealer positioning model.",
            "enum": [
              "classic_oi",
              "flow_adjusted"
            ],
            "type": "string"
          },
          "perspective": {
            "description": "dealer or customer (customer negates the values).",
            "enum": [
              "dealer",
              "customer"
            ],
            "type": "string"
          },
          "points": {
            "description": "The sweep, ascending.",
            "items": {
              "additionalProperties": false,
              "description": "One swept price.",
              "properties": {
                "call_exposure": {
                  "description": "Call exposure.",
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "net_exposure": {
                  "description": "Net modeled exposure.",
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "put_exposure": {
                  "description": "Put exposure.",
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "underlying_price": {
                  "description": "Hypothetical underlying price.",
                  "type": "number"
                }
              },
              "required": [
                "call_exposure",
                "net_exposure",
                "put_exposure",
                "underlying_price"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "positioning_model": {
            "description": "Name and version of the positioning assumption, for example oi_signed_proxy-v1.",
            "type": "string"
          },
          "roots": {
            "description": "Option roots included.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "session": {
            "description": "Session valued.",
            "enum": [
              "rth",
              "gth",
              "curb",
              "all"
            ],
            "type": "string"
          },
          "side_at_ends": {
            "additionalProperties": false,
            "description": "Sign of the net exposure at the ends of the sweep (-1, 0 or 1).",
            "properties": {
              "high": {
                "description": "At the highest swept price.",
                "type": "integer"
              },
              "low": {
                "description": "At the lowest swept price.",
                "type": "integer"
              }
            },
            "required": [
              "high",
              "low"
            ],
            "type": "object"
          },
          "trading_date": {
            "description": "Trading date valued.",
            "format": "date",
            "type": "string"
          },
          "underlying_price": {
            "description": "Current underlying price.",
            "type": [
              "number",
              "null"
            ]
          },
          "underlying_symbol": {
            "description": "The requested underlying.",
            "type": "string"
          },
          "unit": {
            "description": "Scale of the values.",
            "enum": [
              "per_percent",
              "per_dollar",
              "raw"
            ],
            "type": "string"
          },
          "unit_label": {
            "description": "What one unit is, for example usd_per_pct: dollars of dealer hedging per 1% move.",
            "type": "string"
          },
          "valuation": {
            "additionalProperties": false,
            "description": "What the snapshot was valued on.",
            "properties": {
              "chain_timestamp": {
                "description": "Time of the option chain the valuation used. Unix epoch milliseconds (UTC).",
                "format": "unix-ms",
                "type": [
                  "integer",
                  "null"
                ]
              },
              "open_interest_date": {
                "description": "Date of the open interest the positioning is based on.",
                "format": "date",
                "type": [
                  "string",
                  "null"
                ]
              },
              "risk_free_rate": {
                "description": "Continuously compounded risk-free rate used.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "timestamp": {
                "description": "Valuation time. Unix epoch milliseconds (UTC).",
                "format": "unix-ms",
                "type": [
                  "integer",
                  "null"
                ]
              },
              "underlying_price": {
                "description": "Underlying price used.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "underlying_stale": {
                "description": "The underlying price is older than the freshness limit.",
                "type": "boolean"
              },
              "underlying_timestamp": {
                "description": "Time of the underlying price. Unix epoch milliseconds (UTC).",
                "format": "unix-ms",
                "type": [
                  "integer",
                  "null"
                ]
              }
            },
            "required": [
              "chain_timestamp",
              "open_interest_date",
              "risk_free_rate",
              "timestamp",
              "underlying_price",
              "underlying_stale",
              "underlying_timestamp"
            ],
            "type": "object"
          },
          "zero_crossing": {
            "description": "Swept price nearest the current price where the net exposure changes sign; for gamma, the gamma flip (model-derived).",
            "type": [
              "number",
              "null"
            ]
          },
          "zero_crossing_excluding_0dte": {
            "description": "The zero crossing with the contracts expiring on the trading date removed.",
            "type": [
              "number",
              "null"
            ]
          },
          "zero_crossings": {
            "description": "Every swept price where the net exposure changes sign.",
            "items": {
              "type": "number"
            },
            "type": "array"
          }
        },
        "required": [
          "greek",
          "model",
          "perspective",
          "points",
          "positioning_model",
          "roots",
          "session",
          "side_at_ends",
          "trading_date",
          "underlying_price",
          "underlying_symbol",
          "unit",
          "unit_label",
          "valuation",
          "zero_crossing",
          "zero_crossing_excluding_0dte",
          "zero_crossings"
        ],
        "type": "object"
      },
      "OptionsExposureSurfaceRow": {
        "additionalProperties": false,
        "description": "A strike by expiration grid.",
        "properties": {
          "cells": {
            "description": "Cells with a listed contract.",
            "items": {
              "additionalProperties": false,
              "description": "One cell.",
              "properties": {
                "date_of_expiry": {
                  "description": "Expiration.",
                  "format": "date",
                  "type": "string"
                },
                "days_to_expiry": {
                  "description": "Days from the trading date.",
                  "type": "integer"
                },
                "strike": {
                  "description": "Strike.",
                  "type": "number"
                },
                "value": {
                  "description": "Cell value.",
                  "type": "number"
                }
              },
              "required": [
                "date_of_expiry",
                "days_to_expiry",
                "strike",
                "value"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "expiration_window": {
            "additionalProperties": false,
            "description": "The expirations shown.",
            "properties": {
              "count": {
                "description": "Expirations shown.",
                "type": "integer"
              },
              "offset": {
                "description": "Index of the first expiration shown.",
                "type": "integer"
              },
              "total_expirations": {
                "description": "Expirations selected.",
                "type": "integer"
              }
            },
            "required": [
              "count",
              "offset",
              "total_expirations"
            ],
            "type": "object"
          },
          "greek": {
            "description": "The measure: gamma, delta, vanna, charm or the heat map metric.",
            "type": "string"
          },
          "largest_cell": {
            "additionalProperties": false,
            "description": "The cell with the largest absolute value.",
            "properties": {
              "date_of_expiry": {
                "description": "Expiration.",
                "format": "date",
                "type": "string"
              },
              "strike": {
                "description": "Strike.",
                "type": "number"
              },
              "value": {
                "description": "Value.",
                "type": "number"
              }
            },
            "required": [
              "date_of_expiry",
              "strike",
              "value"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "leg": {
            "description": "Which leg the cells show.",
            "enum": [
              "net",
              "call",
              "put"
            ],
            "type": "string"
          },
          "maximum": {
            "description": "Largest cell value.",
            "type": [
              "number",
              "null"
            ]
          },
          "metric": {
            "description": "The cell measure.",
            "type": "string"
          },
          "minimum": {
            "description": "Smallest cell value.",
            "type": [
              "number",
              "null"
            ]
          },
          "model": {
            "description": "Dealer positioning model.",
            "enum": [
              "classic_oi",
              "flow_adjusted"
            ],
            "type": "string"
          },
          "perspective": {
            "description": "dealer or customer (customer negates the values).",
            "enum": [
              "dealer",
              "customer"
            ],
            "type": "string"
          },
          "positioning_model": {
            "description": "Name and version of the positioning assumption, for example oi_signed_proxy-v1.",
            "type": "string"
          },
          "roots": {
            "description": "Option roots included.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "session": {
            "description": "Session valued.",
            "enum": [
              "rth",
              "gth",
              "curb",
              "all"
            ],
            "type": "string"
          },
          "strike_range": {
            "additionalProperties": false,
            "description": "The listed strikes.",
            "properties": {
              "highest_strike": {
                "description": "Highest listed strike.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "lowest_strike": {
                "description": "Lowest listed strike.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "total_strikes": {
                "description": "Listed strikes in the selection.",
                "type": "integer"
              }
            },
            "required": [
              "highest_strike",
              "lowest_strike",
              "total_strikes"
            ],
            "type": "object"
          },
          "trading_date": {
            "description": "Trading date valued.",
            "format": "date",
            "type": "string"
          },
          "underlying_symbol": {
            "description": "The requested underlying.",
            "type": "string"
          },
          "unit": {
            "description": "Scale of the values.",
            "enum": [
              "per_percent",
              "per_dollar",
              "raw"
            ],
            "type": "string"
          },
          "unit_label": {
            "description": "What one unit is, for example usd_per_pct: dollars of dealer hedging per 1% move.",
            "type": "string"
          },
          "valuation": {
            "additionalProperties": false,
            "description": "What the snapshot was valued on.",
            "properties": {
              "chain_timestamp": {
                "description": "Time of the option chain the valuation used. Unix epoch milliseconds (UTC).",
                "format": "unix-ms",
                "type": [
                  "integer",
                  "null"
                ]
              },
              "open_interest_date": {
                "description": "Date of the open interest the positioning is based on.",
                "format": "date",
                "type": [
                  "string",
                  "null"
                ]
              },
              "risk_free_rate": {
                "description": "Continuously compounded risk-free rate used.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "timestamp": {
                "description": "Valuation time. Unix epoch milliseconds (UTC).",
                "format": "unix-ms",
                "type": [
                  "integer",
                  "null"
                ]
              },
              "underlying_price": {
                "description": "Underlying price used.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "underlying_stale": {
                "description": "The underlying price is older than the freshness limit.",
                "type": "boolean"
              },
              "underlying_timestamp": {
                "description": "Time of the underlying price. Unix epoch milliseconds (UTC).",
                "format": "unix-ms",
                "type": [
                  "integer",
                  "null"
                ]
              }
            },
            "required": [
              "chain_timestamp",
              "open_interest_date",
              "risk_free_rate",
              "timestamp",
              "underlying_price",
              "underlying_stale",
              "underlying_timestamp"
            ],
            "type": "object"
          }
        },
        "required": [
          "cells",
          "expiration_window",
          "greek",
          "largest_cell",
          "leg",
          "maximum",
          "metric",
          "minimum",
          "model",
          "perspective",
          "positioning_model",
          "roots",
          "session",
          "strike_range",
          "trading_date",
          "underlying_symbol",
          "unit",
          "unit_label",
          "valuation"
        ],
        "type": "object"
      },
      "OptionsFlowByExpirationRow": {
        "additionalProperties": false,
        "description": "Flow of one expiration.",
        "properties": {
          "call_premium": {
            "description": "Call premium in US dollars.",
            "type": [
              "number",
              "null"
            ]
          },
          "call_trades": {
            "description": "Call prints.",
            "type": "integer"
          },
          "call_volume": {
            "description": "Call contracts traded.",
            "type": "integer"
          },
          "date_of_expiry": {
            "description": "Expiration date.",
            "format": "date",
            "type": "string"
          },
          "days_to_expiry": {
            "description": "Calendar days from the trading date.",
            "type": "integer"
          },
          "net_call_premium": {
            "description": "Call ask side minus bid side.",
            "type": "number"
          },
          "net_put_premium": {
            "description": "Put ask side minus bid side.",
            "type": "number"
          },
          "put_call_volume_ratio": {
            "description": "Put volume over call volume; null without call volume.",
            "type": [
              "number",
              "null"
            ]
          },
          "put_premium": {
            "description": "Put premium in US dollars.",
            "type": [
              "number",
              "null"
            ]
          },
          "put_trades": {
            "description": "Put prints.",
            "type": "integer"
          },
          "put_volume": {
            "description": "Put contracts traded.",
            "type": "integer"
          }
        },
        "required": [
          "call_premium",
          "call_trades",
          "call_volume",
          "date_of_expiry",
          "days_to_expiry",
          "net_call_premium",
          "net_put_premium",
          "put_call_volume_ratio",
          "put_premium",
          "put_trades",
          "put_volume"
        ],
        "type": "object"
      },
      "OptionsFlowByStrikeRow": {
        "additionalProperties": false,
        "description": "Flow by strike.",
        "properties": {
          "session": {
            "description": "Session covered.",
            "enum": [
              "rth",
              "gth",
              "curb",
              "all"
            ],
            "type": "string"
          },
          "strikes": {
            "description": "Strikes with activity, ascending.",
            "items": {
              "additionalProperties": false,
              "description": "One strike.",
              "properties": {
                "call": {
                  "additionalProperties": false,
                  "description": "Call flow.",
                  "properties": {
                    "ask_premium": {
                      "description": "Premium at or near the ask.",
                      "type": "number"
                    },
                    "ask_volume": {
                      "description": "Contracts at or near the ask.",
                      "type": "integer"
                    },
                    "bid_premium": {
                      "description": "Premium at or near the bid.",
                      "type": "number"
                    },
                    "bid_volume": {
                      "description": "Contracts at or near the bid.",
                      "type": "integer"
                    },
                    "mid_premium": {
                      "description": "Premium around the mid.",
                      "type": "number"
                    },
                    "mid_volume": {
                      "description": "Contracts around the mid.",
                      "type": "integer"
                    },
                    "net_premium": {
                      "description": "ask_premium minus bid_premium.",
                      "type": "number"
                    },
                    "premium": {
                      "description": "Premium in US dollars.",
                      "type": "number"
                    },
                    "unknown_premium": {
                      "description": "Premium of prints with unknown side.",
                      "type": "number"
                    },
                    "unknown_volume": {
                      "description": "Contracts with unknown side.",
                      "type": "integer"
                    },
                    "volume": {
                      "description": "Contracts traded.",
                      "type": "integer"
                    }
                  },
                  "required": [
                    "ask_premium",
                    "ask_volume",
                    "bid_premium",
                    "bid_volume",
                    "mid_premium",
                    "mid_volume",
                    "net_premium",
                    "premium",
                    "unknown_premium",
                    "unknown_volume",
                    "volume"
                  ],
                  "type": "object"
                },
                "call_open_interest": {
                  "description": "Call open interest.",
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "put": {
                  "additionalProperties": false,
                  "description": "Put flow.",
                  "properties": {
                    "ask_premium": {
                      "description": "Premium at or near the ask.",
                      "type": "number"
                    },
                    "ask_volume": {
                      "description": "Contracts at or near the ask.",
                      "type": "integer"
                    },
                    "bid_premium": {
                      "description": "Premium at or near the bid.",
                      "type": "number"
                    },
                    "bid_volume": {
                      "description": "Contracts at or near the bid.",
                      "type": "integer"
                    },
                    "mid_premium": {
                      "description": "Premium around the mid.",
                      "type": "number"
                    },
                    "mid_volume": {
                      "description": "Contracts around the mid.",
                      "type": "integer"
                    },
                    "net_premium": {
                      "description": "ask_premium minus bid_premium.",
                      "type": "number"
                    },
                    "premium": {
                      "description": "Premium in US dollars.",
                      "type": "number"
                    },
                    "unknown_premium": {
                      "description": "Premium of prints with unknown side.",
                      "type": "number"
                    },
                    "unknown_volume": {
                      "description": "Contracts with unknown side.",
                      "type": "integer"
                    },
                    "volume": {
                      "description": "Contracts traded.",
                      "type": "integer"
                    }
                  },
                  "required": [
                    "ask_premium",
                    "ask_volume",
                    "bid_premium",
                    "bid_volume",
                    "mid_premium",
                    "mid_volume",
                    "net_premium",
                    "premium",
                    "unknown_premium",
                    "unknown_volume",
                    "volume"
                  ],
                  "type": "object"
                },
                "put_open_interest": {
                  "description": "Put open interest.",
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "strike": {
                  "description": "Strike in dollars.",
                  "type": "number"
                }
              },
              "required": [
                "call",
                "call_open_interest",
                "put",
                "put_open_interest",
                "strike"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "totals": {
            "additionalProperties": false,
            "description": "Totals over every strike.",
            "properties": {
              "call_premium": {
                "description": "Call premium in US dollars.",
                "type": "number"
              },
              "net_call_premium": {
                "description": "Call ask side minus bid side.",
                "type": "number"
              },
              "net_put_premium": {
                "description": "Put ask side minus bid side.",
                "type": "number"
              },
              "put_premium": {
                "description": "Put premium in US dollars.",
                "type": "number"
              }
            },
            "required": [
              "call_premium",
              "net_call_premium",
              "net_put_premium",
              "put_premium"
            ],
            "type": "object"
          },
          "trading_date": {
            "description": "Trading date.",
            "format": "date",
            "type": "string"
          },
          "underlying_price": {
            "description": "Underlying price; null when unknown.",
            "type": [
              "number",
              "null"
            ]
          },
          "underlying_symbol": {
            "description": "The requested underlying.",
            "type": "string"
          }
        },
        "required": [
          "session",
          "strikes",
          "totals",
          "trading_date",
          "underlying_price",
          "underlying_symbol"
        ],
        "type": "object"
      },
      "OptionsFlowExchangesRow": {
        "additionalProperties": false,
        "description": "One exchange or venue group.",
        "properties": {
          "exchange": {
            "description": "Exchange name, for example cboe, or unmapped_<code>; null when rows are venue groups.",
            "type": [
              "string",
              "null"
            ]
          },
          "exchange_code": {
            "description": "Numeric exchange code; null for venue groups.",
            "type": [
              "integer",
              "null"
            ]
          },
          "premium": {
            "description": "Premium in US dollars.",
            "type": "number"
          },
          "premium_share": {
            "description": "Share of total premium, 0 to 1.",
            "type": "number"
          },
          "trades": {
            "description": "Prints.",
            "type": "integer"
          },
          "trades_share": {
            "description": "Share of total prints, 0 to 1.",
            "type": "number"
          },
          "venue_group": {
            "description": "Venue group: Cboe, Nasdaq, ICE/NYSE, ISE, MIAX, BOX, MEMX or Other.",
            "type": "string"
          },
          "volume": {
            "description": "Contracts traded.",
            "type": "integer"
          },
          "volume_share": {
            "description": "Share of total volume, 0 to 1.",
            "type": "number"
          }
        },
        "required": [
          "exchange",
          "exchange_code",
          "premium",
          "premium_share",
          "trades",
          "trades_share",
          "venue_group",
          "volume",
          "volume_share"
        ],
        "type": "object"
      },
      "OptionsFlowLeadersRow": {
        "additionalProperties": false,
        "description": "An underlying (grain=root) or a contract (grain=contract). Only the fields of the requested grain are present.",
        "properties": {
          "bearish_premium": {
            "description": "Root grain: premium of bearish prints.",
            "type": "number"
          },
          "bearish_to_bullish_ratio": {
            "description": "Root grain: bearish premium over bullish premium; null when there is no bullish premium.",
            "type": [
              "number",
              "null"
            ]
          },
          "bullish_premium": {
            "description": "Root grain: premium of bullish prints in US dollars.",
            "type": "number"
          },
          "call_volume": {
            "description": "Root grain: call contracts.",
            "type": "integer"
          },
          "change_percent": {
            "description": "Contract grain: change from the previous close in percent.",
            "type": "number"
          },
          "contract_type": {
            "description": "Call or put.",
            "enum": [
              "call",
              "put"
            ],
            "type": "string"
          },
          "date_of_expiry": {
            "description": "Contract grain: expiration.",
            "format": "date",
            "type": "string"
          },
          "implied_volatility": {
            "description": "Contract grain: implied volatility.",
            "type": [
              "number",
              "null"
            ]
          },
          "last_price": {
            "description": "Contract grain: last price.",
            "type": "number"
          },
          "neutral_premium": {
            "description": "Root grain: premium of prints at the mid.",
            "type": "number"
          },
          "open_interest": {
            "description": "Contract grain: open interest.",
            "type": "integer"
          },
          "premium": {
            "description": "Total premium in US dollars.",
            "type": "number"
          },
          "premium_share": {
            "description": "Root grain: share of market premium, 0 to 1.",
            "type": "number"
          },
          "previous_close": {
            "description": "Contract grain: previous close.",
            "type": "number"
          },
          "put_volume": {
            "description": "Root grain: put contracts.",
            "type": "integer"
          },
          "strike": {
            "description": "Contract grain: strike.",
            "type": "number"
          },
          "trades": {
            "description": "Root grain: prints.",
            "type": "integer"
          },
          "trades_share": {
            "description": "Root grain: share of market prints.",
            "type": "number"
          },
          "underlying_symbol": {
            "description": "Underlying (root grain) or option root (contract grain).",
            "type": "string"
          },
          "volume": {
            "description": "Contracts traded.",
            "type": "integer"
          },
          "volume_share": {
            "description": "Root grain: share of market volume.",
            "type": "number"
          }
        },
        "required": [
          "underlying_symbol"
        ],
        "type": "object"
      },
      "OptionsFlowNetDriftRow": {
        "additionalProperties": false,
        "description": "Net premium and volume of one bucket.",
        "properties": {
          "cumulative_net_call_premium": {
            "description": "net_call_premium accumulated from the start of the session.",
            "type": [
              "number",
              "null"
            ]
          },
          "cumulative_net_put_premium": {
            "description": "net_put_premium accumulated from the start of the session.",
            "type": [
              "number",
              "null"
            ]
          },
          "mid_call_premium": {
            "description": "Call premium traded around the mid, in US dollars.",
            "type": [
              "number",
              "null"
            ]
          },
          "mid_put_premium": {
            "description": "Put premium traded around the mid, in US dollars.",
            "type": [
              "number",
              "null"
            ]
          },
          "net_call_premium": {
            "description": "Call premium bought at the ask side minus sold at the bid side, in US dollars.",
            "type": [
              "number",
              "null"
            ]
          },
          "net_call_volume": {
            "description": "Call contracts bought minus sold.",
            "type": [
              "number",
              "null"
            ]
          },
          "net_put_premium": {
            "description": "Put premium bought at the ask side minus sold at the bid side, in US dollars.",
            "type": [
              "number",
              "null"
            ]
          },
          "net_put_volume": {
            "description": "Put contracts bought minus sold.",
            "type": [
              "number",
              "null"
            ]
          },
          "timestamp": {
            "description": "Start of the bucket. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "underlying_price": {
            "description": "Underlying price during the bucket; null when unknown.",
            "type": [
              "number",
              "null"
            ]
          }
        },
        "required": [
          "cumulative_net_call_premium",
          "cumulative_net_put_premium",
          "mid_call_premium",
          "mid_put_premium",
          "net_call_premium",
          "net_call_volume",
          "net_put_premium",
          "net_put_volume",
          "timestamp",
          "underlying_price"
        ],
        "type": "object"
      },
      "OptionsFlowNetFlowRow": {
        "additionalProperties": false,
        "description": "Net flow of one bucket.",
        "properties": {
          "net": {
            "description": "net_call minus net_put: positive is bullish, negative bearish.",
            "type": [
              "number",
              "null"
            ]
          },
          "net_call": {
            "description": "Calls bought at the ask side minus sold at the bid side (premium in US dollars, or contracts).",
            "type": [
              "number",
              "null"
            ]
          },
          "net_put": {
            "description": "Puts bought at the ask side minus sold at the bid side.",
            "type": [
              "number",
              "null"
            ]
          },
          "timestamp": {
            "description": "Start of the bucket. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "underlying_price": {
            "description": "Underlying price during the bucket; null when unknown.",
            "type": [
              "number",
              "null"
            ]
          }
        },
        "required": [
          "net",
          "net_call",
          "net_put",
          "timestamp",
          "underlying_price"
        ],
        "type": "object"
      },
      "OptionsFlowOvernightRow": {
        "additionalProperties": false,
        "description": "One classified option print.",
        "properties": {
          "ask": {
            "description": "Best ask at execution; null when no valid quote was available.",
            "type": [
              "number",
              "null"
            ]
          },
          "bid": {
            "description": "Best bid at execution; null when no valid quote was available.",
            "type": [
              "number",
              "null"
            ]
          },
          "condition_code": {
            "description": "Numeric trade condition code.",
            "type": "integer"
          },
          "contract_type": {
            "description": "Call or put.",
            "enum": [
              "call",
              "put"
            ],
            "type": "string"
          },
          "date_of_expiry": {
            "description": "Expiration date.",
            "format": "date",
            "type": "string"
          },
          "day_volume": {
            "description": "Contracts traded in this contract so far on the trading date, as counted by the platform.",
            "type": "integer"
          },
          "days_to_expiry": {
            "description": "Calendar days from the trading date to expiration.",
            "type": "integer"
          },
          "delta": {
            "description": "Delta at execution.",
            "type": [
              "number",
              "null"
            ]
          },
          "exchange": {
            "description": "Executing exchange, for example cboe, or unmapped_<code> for a venue without a name.",
            "type": "string"
          },
          "exchange_code": {
            "description": "Numeric exchange code of the options price reporting authority.",
            "type": "integer"
          },
          "flags": {
            "description": "Condition flags: iso (intermarket sweep), auction, cross, floor, complex (multi-leg order), tied, implied, ext_hours, late, cancelled, aggressor_hint, post_cash_close, vol_gt_oi (day volume above open interest), size_gt_oi (print size above open interest), no_side.",
            "items": {
              "description": "A condition flag.",
              "enum": [
                "iso",
                "auction",
                "cross",
                "floor",
                "complex",
                "tied",
                "implied",
                "ext_hours",
                "late",
                "cancelled",
                "aggressor_hint",
                "post_cash_close",
                "vol_gt_oi",
                "size_gt_oi",
                "no_side"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "group_id": {
            "description": "Identifier of the sweep or split this print belongs to; null for a single print.",
            "type": [
              "string",
              "null"
            ]
          },
          "id": {
            "description": "Identifier of the print: root:expiry:strike x 1000:right:date:sequence. Stable; treat it as opaque.",
            "type": "string"
          },
          "implied_volatility": {
            "description": "Implied volatility solved at execution.",
            "type": [
              "number",
              "null"
            ]
          },
          "is_block": {
            "description": "A block: at least 100 contracts and $50,000 premium, or $250,000 premium, or a large auction, cross or floor print.",
            "type": "boolean"
          },
          "is_golden": {
            "description": "A golden sweep: a sweep of at least $1,000,000 premium.",
            "type": "boolean"
          },
          "is_unusual": {
            "description": "Volume above open interest within 45 days, premium of at least $250,000, or an out-of-the-money sweep at the ask.",
            "type": "boolean"
          },
          "open_interest": {
            "description": "Open interest of the contract at the start of the trading date.",
            "type": [
              "integer",
              "null"
            ]
          },
          "otm_percent": {
            "description": "How far out of the money the strike is, in percent of the underlying price; negative when in the money.",
            "type": [
              "number",
              "null"
            ]
          },
          "premium": {
            "description": "Premium in US dollars: price x size x multiplier.",
            "type": "number"
          },
          "price": {
            "description": "Execution price per share.",
            "type": "number"
          },
          "sentiment": {
            "description": "Direction implied by the side: bullish (calls bought or puts sold), bearish (puts bought or calls sold), neutral (traded at the mid) or unknown.",
            "enum": [
              "bullish",
              "bearish",
              "neutral",
              "unknown"
            ],
            "type": "string"
          },
          "session": {
            "description": "Session of the print.",
            "enum": [
              "rth",
              "gth",
              "curb",
              "other"
            ],
            "type": "string"
          },
          "side": {
            "description": "Aggressor class of the print against the quote it was classified with: above_ask (through the ask), at_ask, near_ask (inside the spread, above the mid zone), mid, near_bid, at_bid, below_bid, or unknown when the quote was missing or invalid.",
            "enum": [
              "above_ask",
              "at_ask",
              "near_ask",
              "mid",
              "near_bid",
              "at_bid",
              "below_bid",
              "unknown"
            ],
            "type": "string"
          },
          "side_confidence": {
            "description": "Confidence of the side classification, 0 to 1; lower when the quote was stale or the order was a complex one.",
            "type": "number"
          },
          "size": {
            "description": "Contracts traded.",
            "type": "integer"
          },
          "strike": {
            "description": "Strike in dollars.",
            "type": "number"
          },
          "timestamp": {
            "description": "Execution time. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "trade_type": {
            "description": "Print or order type. Sweeps and splits are inferred groupings of prints, not exchange-confirmed.",
            "enum": [
              "sweep",
              "split",
              "single",
              "multileg",
              "cross",
              "floor"
            ],
            "type": "string"
          },
          "underlying_price": {
            "description": "Underlying price at execution; null when unknown.",
            "type": [
              "number",
              "null"
            ]
          },
          "underlying_symbol": {
            "description": "Option root of the contract, for example SPXW.",
            "type": "string"
          }
        },
        "required": [
          "ask",
          "bid",
          "condition_code",
          "contract_type",
          "date_of_expiry",
          "day_volume",
          "days_to_expiry",
          "delta",
          "exchange",
          "exchange_code",
          "flags",
          "group_id",
          "id",
          "implied_volatility",
          "is_block",
          "is_golden",
          "is_unusual",
          "open_interest",
          "otm_percent",
          "premium",
          "price",
          "sentiment",
          "session",
          "side",
          "side_confidence",
          "size",
          "strike",
          "timestamp",
          "trade_type",
          "underlying_price",
          "underlying_symbol"
        ],
        "type": "object"
      },
      "OptionsFlowPremiumDriftRow": {
        "additionalProperties": false,
        "description": "Cumulative signed premium at one bucket.",
        "properties": {
          "call_drift": {
            "description": "Cumulative call premium bought at the ask side minus sold at the bid side, in US dollars.",
            "type": [
              "number",
              "null"
            ]
          },
          "put_drift": {
            "description": "Cumulative put premium bought at the ask side minus sold at the bid side, in US dollars.",
            "type": [
              "number",
              "null"
            ]
          },
          "sentiment_drift": {
            "description": "call_drift minus put_drift: rises when premium flows into calls or out of puts (bullish).",
            "type": [
              "number",
              "null"
            ]
          },
          "timestamp": {
            "description": "Start of the bucket. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "underlying_price": {
            "description": "Underlying price during the bucket; null when unknown.",
            "type": [
              "number",
              "null"
            ]
          }
        },
        "required": [
          "call_drift",
          "put_drift",
          "sentiment_drift",
          "timestamp",
          "underlying_price"
        ],
        "type": "object"
      },
      "OptionsFlowPutCallRatioRow": {
        "additionalProperties": false,
        "description": "Put/call ratios of one bucket.",
        "properties": {
          "call_premium": {
            "description": "Call premium in US dollars.",
            "type": "number"
          },
          "call_trades": {
            "description": "Call prints.",
            "type": "integer"
          },
          "call_volume": {
            "description": "Call contracts traded in the bucket.",
            "type": "integer"
          },
          "cumulative_put_call_premium_ratio": {
            "description": "Put/call premium ratio from the start of the session through this bucket.",
            "type": [
              "number",
              "null"
            ]
          },
          "cumulative_put_call_volume_ratio": {
            "description": "Put/call volume ratio from the start of the session through this bucket.",
            "type": [
              "number",
              "null"
            ]
          },
          "put_call_premium_ratio": {
            "description": "Put premium over call premium; null when there was no call premium.",
            "type": [
              "number",
              "null"
            ]
          },
          "put_call_volume_ratio": {
            "description": "Put volume over call volume; null when there was no call volume.",
            "type": [
              "number",
              "null"
            ]
          },
          "put_premium": {
            "description": "Put premium in US dollars.",
            "type": "number"
          },
          "put_trades": {
            "description": "Put prints.",
            "type": "integer"
          },
          "put_volume": {
            "description": "Put contracts traded in the bucket.",
            "type": "integer"
          },
          "timestamp": {
            "description": "Start of the bucket. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "underlying_price": {
            "description": "Underlying price during the bucket; null when unknown.",
            "type": [
              "number",
              "null"
            ]
          }
        },
        "required": [
          "call_premium",
          "call_trades",
          "call_volume",
          "cumulative_put_call_premium_ratio",
          "cumulative_put_call_volume_ratio",
          "put_call_premium_ratio",
          "put_call_volume_ratio",
          "put_premium",
          "put_trades",
          "put_volume",
          "timestamp",
          "underlying_price"
        ],
        "type": "object"
      },
      "OptionsFlowRow": {
        "additionalProperties": false,
        "description": "One consolidated order.",
        "properties": {
          "contract_type": {
            "description": "Call or put.",
            "enum": [
              "call",
              "put"
            ],
            "type": "string"
          },
          "date_of_expiry": {
            "description": "Expiration date.",
            "format": "date",
            "type": "string"
          },
          "days_to_expiry": {
            "description": "Calendar days from the trading date to expiration.",
            "type": "integer"
          },
          "end_timestamp": {
            "description": "Time of the last print. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "exchange_count": {
            "description": "Exchanges the order executed on.",
            "type": "integer"
          },
          "flags": {
            "description": "Condition flags: iso (intermarket sweep), auction, cross, floor, complex (multi-leg order), tied, implied, ext_hours, late, cancelled, aggressor_hint, post_cash_close, vol_gt_oi (day volume above open interest), size_gt_oi (print size above open interest), no_side.",
            "items": {
              "description": "A condition flag.",
              "enum": [
                "iso",
                "auction",
                "cross",
                "floor",
                "complex",
                "tied",
                "implied",
                "ext_hours",
                "late",
                "cancelled",
                "aggressor_hint",
                "post_cash_close",
                "vol_gt_oi",
                "size_gt_oi",
                "no_side"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "id": {
            "description": "Identifier of the order (the sweep or split, or the print for a single).",
            "type": "string"
          },
          "is_block": {
            "description": "A block order.",
            "type": "boolean"
          },
          "is_golden": {
            "description": "A golden sweep: a sweep of at least $1,000,000 premium.",
            "type": "boolean"
          },
          "legs": {
            "description": "Prints in the order.",
            "type": "integer"
          },
          "open_interest": {
            "description": "Open interest of the contract at the start of the trading date.",
            "type": [
              "integer",
              "null"
            ]
          },
          "otm_percent": {
            "description": "How far out of the money the strike is, in percent of the underlying price.",
            "type": [
              "number",
              "null"
            ]
          },
          "premium": {
            "description": "Premium in US dollars.",
            "type": "number"
          },
          "price": {
            "description": "Volume-weighted price per share.",
            "type": "number"
          },
          "sentiment": {
            "description": "Direction implied by the side: bullish (calls bought or puts sold), bearish (puts bought or calls sold), neutral (traded at the mid) or unknown.",
            "enum": [
              "bullish",
              "bearish",
              "neutral",
              "unknown"
            ],
            "type": "string"
          },
          "side": {
            "description": "Aggressor class of the order's most aggressive print: above_ask, ask (at or near the ask), mid, bid (at or near the bid), below_bid, or unknown.",
            "enum": [
              "above_ask",
              "ask",
              "mid",
              "bid",
              "below_bid",
              "unknown"
            ],
            "type": "string"
          },
          "size": {
            "description": "Contracts traded.",
            "type": "integer"
          },
          "strike": {
            "description": "Strike in dollars.",
            "type": "number"
          },
          "timestamp": {
            "description": "Time of the first print. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "trade_type": {
            "description": "Print or order type. Sweeps and splits are inferred groupings of prints, not exchange-confirmed.",
            "enum": [
              "sweep",
              "split",
              "single",
              "multileg",
              "cross",
              "floor"
            ],
            "type": "string"
          },
          "underlying_price": {
            "description": "Underlying price at execution; null when unknown.",
            "type": [
              "number",
              "null"
            ]
          },
          "underlying_symbol": {
            "description": "Option root of the contract, for example SPXW.",
            "type": "string"
          }
        },
        "required": [
          "contract_type",
          "date_of_expiry",
          "days_to_expiry",
          "end_timestamp",
          "exchange_count",
          "flags",
          "id",
          "is_block",
          "is_golden",
          "legs",
          "open_interest",
          "otm_percent",
          "premium",
          "price",
          "sentiment",
          "side",
          "size",
          "strike",
          "timestamp",
          "trade_type",
          "underlying_price",
          "underlying_symbol"
        ],
        "type": "object"
      },
      "OptionsFlowStatsRow": {
        "additionalProperties": false,
        "description": "Statistics of a filtered print set.",
        "properties": {
          "call": {
            "additionalProperties": false,
            "description": "Call activity.",
            "properties": {
              "by_side": {
                "additionalProperties": false,
                "description": "Activity by aggressor class.",
                "properties": {
                  "above_ask": {
                    "additionalProperties": false,
                    "description": "Prints through the ask.",
                    "properties": {
                      "premium": {
                        "description": "Premium in US dollars.",
                        "type": [
                          "number",
                          "null"
                        ]
                      },
                      "trades": {
                        "description": "Prints.",
                        "type": "integer"
                      },
                      "volume": {
                        "description": "Contracts traded.",
                        "type": "integer"
                      }
                    },
                    "required": [
                      "premium",
                      "trades",
                      "volume"
                    ],
                    "type": "object"
                  },
                  "ask": {
                    "additionalProperties": false,
                    "description": "Prints at or near the ask.",
                    "properties": {
                      "premium": {
                        "description": "Premium in US dollars.",
                        "type": [
                          "number",
                          "null"
                        ]
                      },
                      "trades": {
                        "description": "Prints.",
                        "type": "integer"
                      },
                      "volume": {
                        "description": "Contracts traded.",
                        "type": "integer"
                      }
                    },
                    "required": [
                      "premium",
                      "trades",
                      "volume"
                    ],
                    "type": "object"
                  },
                  "below_bid": {
                    "additionalProperties": false,
                    "description": "Prints through the bid.",
                    "properties": {
                      "premium": {
                        "description": "Premium in US dollars.",
                        "type": [
                          "number",
                          "null"
                        ]
                      },
                      "trades": {
                        "description": "Prints.",
                        "type": "integer"
                      },
                      "volume": {
                        "description": "Contracts traded.",
                        "type": "integer"
                      }
                    },
                    "required": [
                      "premium",
                      "trades",
                      "volume"
                    ],
                    "type": "object"
                  },
                  "bid": {
                    "additionalProperties": false,
                    "description": "Prints at or near the bid.",
                    "properties": {
                      "premium": {
                        "description": "Premium in US dollars.",
                        "type": [
                          "number",
                          "null"
                        ]
                      },
                      "trades": {
                        "description": "Prints.",
                        "type": "integer"
                      },
                      "volume": {
                        "description": "Contracts traded.",
                        "type": "integer"
                      }
                    },
                    "required": [
                      "premium",
                      "trades",
                      "volume"
                    ],
                    "type": "object"
                  },
                  "mid": {
                    "additionalProperties": false,
                    "description": "Prints around the mid.",
                    "properties": {
                      "premium": {
                        "description": "Premium in US dollars.",
                        "type": [
                          "number",
                          "null"
                        ]
                      },
                      "trades": {
                        "description": "Prints.",
                        "type": "integer"
                      },
                      "volume": {
                        "description": "Contracts traded.",
                        "type": "integer"
                      }
                    },
                    "required": [
                      "premium",
                      "trades",
                      "volume"
                    ],
                    "type": "object"
                  },
                  "unknown": {
                    "additionalProperties": false,
                    "description": "Prints whose side could not be determined.",
                    "properties": {
                      "premium": {
                        "description": "Premium in US dollars.",
                        "type": [
                          "number",
                          "null"
                        ]
                      },
                      "trades": {
                        "description": "Prints.",
                        "type": "integer"
                      },
                      "volume": {
                        "description": "Contracts traded.",
                        "type": "integer"
                      }
                    },
                    "required": [
                      "premium",
                      "trades",
                      "volume"
                    ],
                    "type": "object"
                  }
                },
                "required": [
                  "above_ask",
                  "ask",
                  "below_bid",
                  "bid",
                  "mid",
                  "unknown"
                ],
                "type": "object"
              },
              "premium": {
                "description": "Premium in US dollars.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "trades": {
                "description": "Prints.",
                "type": "integer"
              },
              "volume": {
                "description": "Contracts traded.",
                "type": "integer"
              }
            },
            "required": [
              "by_side",
              "premium",
              "trades",
              "volume"
            ],
            "type": "object"
          },
          "delta_notional": {
            "additionalProperties": false,
            "description": "Customer delta notional of the prints in dollars of underlying exposure (absolute delta x size x multiplier x underlying price, buys minus sells).",
            "properties": {
              "call": {
                "description": "Calls.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "net": {
                "description": "Calls minus puts.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "put": {
                "description": "Puts.",
                "type": [
                  "number",
                  "null"
                ]
              }
            },
            "required": [
              "call",
              "net",
              "put"
            ],
            "type": "object"
          },
          "largest_prints": {
            "description": "The largest prints by premium.",
            "items": {
              "additionalProperties": false,
              "description": "A print.",
              "properties": {
                "contract_type": {
                  "description": "Call or put.",
                  "enum": [
                    "call",
                    "put"
                  ],
                  "type": "string"
                },
                "date_of_expiry": {
                  "description": "Expiration date.",
                  "format": "date",
                  "type": "string"
                },
                "id": {
                  "description": "Print identifier.",
                  "type": "string"
                },
                "premium": {
                  "description": "Premium in US dollars.",
                  "type": "number"
                },
                "price": {
                  "description": "Price.",
                  "type": "number"
                },
                "side": {
                  "description": "Aggressor class of the order's most aggressive print: above_ask, ask (at or near the ask), mid, bid (at or near the bid), below_bid, or unknown.",
                  "enum": [
                    "above_ask",
                    "ask",
                    "mid",
                    "bid",
                    "below_bid",
                    "unknown"
                  ],
                  "type": "string"
                },
                "size": {
                  "description": "Contracts.",
                  "type": "integer"
                },
                "strike": {
                  "description": "Strike.",
                  "type": "number"
                },
                "timestamp": {
                  "description": "Execution time. Unix epoch milliseconds (UTC).",
                  "format": "unix-ms",
                  "type": "integer"
                },
                "underlying_symbol": {
                  "description": "Option root.",
                  "type": "string"
                }
              },
              "required": [
                "contract_type",
                "date_of_expiry",
                "id",
                "premium",
                "price",
                "side",
                "size",
                "strike",
                "timestamp",
                "underlying_symbol"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "open_interest": {
            "additionalProperties": false,
            "description": "Open interest of the contracts in scope.",
            "properties": {
              "call": {
                "description": "Call open interest.",
                "type": [
                  "integer",
                  "null"
                ]
              },
              "put": {
                "description": "Put open interest.",
                "type": [
                  "integer",
                  "null"
                ]
              },
              "put_call": {
                "description": "Put open interest over call open interest.",
                "type": [
                  "number",
                  "null"
                ]
              }
            },
            "required": [
              "call",
              "put",
              "put_call"
            ],
            "type": "object"
          },
          "order_types": {
            "additionalProperties": false,
            "description": "Counts of order types.",
            "properties": {
              "block": {
                "additionalProperties": false,
                "description": "Blocks.",
                "properties": {
                  "count": {
                    "description": "Orders or prints of this type.",
                    "type": "integer"
                  },
                  "premium": {
                    "description": "Their premium in US dollars.",
                    "type": [
                      "number",
                      "null"
                    ]
                  }
                },
                "required": [
                  "count",
                  "premium"
                ],
                "type": "object"
              },
              "cross": {
                "additionalProperties": false,
                "description": "Crosses.",
                "properties": {
                  "count": {
                    "description": "Orders or prints of this type.",
                    "type": "integer"
                  },
                  "premium": {
                    "description": "Their premium in US dollars.",
                    "type": [
                      "number",
                      "null"
                    ]
                  }
                },
                "required": [
                  "count",
                  "premium"
                ],
                "type": "object"
              },
              "floor": {
                "additionalProperties": false,
                "description": "Floor prints.",
                "properties": {
                  "count": {
                    "description": "Orders or prints of this type.",
                    "type": "integer"
                  },
                  "premium": {
                    "description": "Their premium in US dollars.",
                    "type": [
                      "number",
                      "null"
                    ]
                  }
                },
                "required": [
                  "count",
                  "premium"
                ],
                "type": "object"
              },
              "golden": {
                "additionalProperties": false,
                "description": "Golden sweeps.",
                "properties": {
                  "count": {
                    "description": "Orders or prints of this type.",
                    "type": "integer"
                  },
                  "premium": {
                    "description": "Their premium in US dollars.",
                    "type": [
                      "number",
                      "null"
                    ]
                  }
                },
                "required": [
                  "count",
                  "premium"
                ],
                "type": "object"
              },
              "multileg": {
                "additionalProperties": false,
                "description": "Multi-leg prints.",
                "properties": {
                  "count": {
                    "description": "Orders or prints of this type.",
                    "type": "integer"
                  },
                  "premium": {
                    "description": "Their premium in US dollars.",
                    "type": [
                      "number",
                      "null"
                    ]
                  }
                },
                "required": [
                  "count",
                  "premium"
                ],
                "type": "object"
              },
              "split": {
                "additionalProperties": false,
                "description": "Splits.",
                "properties": {
                  "count": {
                    "description": "Orders or prints of this type.",
                    "type": "integer"
                  },
                  "premium": {
                    "description": "Their premium in US dollars.",
                    "type": [
                      "number",
                      "null"
                    ]
                  }
                },
                "required": [
                  "count",
                  "premium"
                ],
                "type": "object"
              },
              "sweep": {
                "additionalProperties": false,
                "description": "Sweeps.",
                "properties": {
                  "count": {
                    "description": "Orders or prints of this type.",
                    "type": "integer"
                  },
                  "premium": {
                    "description": "Their premium in US dollars.",
                    "type": [
                      "number",
                      "null"
                    ]
                  }
                },
                "required": [
                  "count",
                  "premium"
                ],
                "type": "object"
              }
            },
            "required": [
              "block",
              "cross",
              "floor",
              "golden",
              "multileg",
              "split",
              "sweep"
            ],
            "type": "object"
          },
          "put": {
            "additionalProperties": false,
            "description": "Put activity.",
            "properties": {
              "by_side": {
                "additionalProperties": false,
                "description": "Activity by aggressor class.",
                "properties": {
                  "above_ask": {
                    "additionalProperties": false,
                    "description": "Prints through the ask.",
                    "properties": {
                      "premium": {
                        "description": "Premium in US dollars.",
                        "type": [
                          "number",
                          "null"
                        ]
                      },
                      "trades": {
                        "description": "Prints.",
                        "type": "integer"
                      },
                      "volume": {
                        "description": "Contracts traded.",
                        "type": "integer"
                      }
                    },
                    "required": [
                      "premium",
                      "trades",
                      "volume"
                    ],
                    "type": "object"
                  },
                  "ask": {
                    "additionalProperties": false,
                    "description": "Prints at or near the ask.",
                    "properties": {
                      "premium": {
                        "description": "Premium in US dollars.",
                        "type": [
                          "number",
                          "null"
                        ]
                      },
                      "trades": {
                        "description": "Prints.",
                        "type": "integer"
                      },
                      "volume": {
                        "description": "Contracts traded.",
                        "type": "integer"
                      }
                    },
                    "required": [
                      "premium",
                      "trades",
                      "volume"
                    ],
                    "type": "object"
                  },
                  "below_bid": {
                    "additionalProperties": false,
                    "description": "Prints through the bid.",
                    "properties": {
                      "premium": {
                        "description": "Premium in US dollars.",
                        "type": [
                          "number",
                          "null"
                        ]
                      },
                      "trades": {
                        "description": "Prints.",
                        "type": "integer"
                      },
                      "volume": {
                        "description": "Contracts traded.",
                        "type": "integer"
                      }
                    },
                    "required": [
                      "premium",
                      "trades",
                      "volume"
                    ],
                    "type": "object"
                  },
                  "bid": {
                    "additionalProperties": false,
                    "description": "Prints at or near the bid.",
                    "properties": {
                      "premium": {
                        "description": "Premium in US dollars.",
                        "type": [
                          "number",
                          "null"
                        ]
                      },
                      "trades": {
                        "description": "Prints.",
                        "type": "integer"
                      },
                      "volume": {
                        "description": "Contracts traded.",
                        "type": "integer"
                      }
                    },
                    "required": [
                      "premium",
                      "trades",
                      "volume"
                    ],
                    "type": "object"
                  },
                  "mid": {
                    "additionalProperties": false,
                    "description": "Prints around the mid.",
                    "properties": {
                      "premium": {
                        "description": "Premium in US dollars.",
                        "type": [
                          "number",
                          "null"
                        ]
                      },
                      "trades": {
                        "description": "Prints.",
                        "type": "integer"
                      },
                      "volume": {
                        "description": "Contracts traded.",
                        "type": "integer"
                      }
                    },
                    "required": [
                      "premium",
                      "trades",
                      "volume"
                    ],
                    "type": "object"
                  },
                  "unknown": {
                    "additionalProperties": false,
                    "description": "Prints whose side could not be determined.",
                    "properties": {
                      "premium": {
                        "description": "Premium in US dollars.",
                        "type": [
                          "number",
                          "null"
                        ]
                      },
                      "trades": {
                        "description": "Prints.",
                        "type": "integer"
                      },
                      "volume": {
                        "description": "Contracts traded.",
                        "type": "integer"
                      }
                    },
                    "required": [
                      "premium",
                      "trades",
                      "volume"
                    ],
                    "type": "object"
                  }
                },
                "required": [
                  "above_ask",
                  "ask",
                  "below_bid",
                  "bid",
                  "mid",
                  "unknown"
                ],
                "type": "object"
              },
              "premium": {
                "description": "Premium in US dollars.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "trades": {
                "description": "Prints.",
                "type": "integer"
              },
              "volume": {
                "description": "Contracts traded.",
                "type": "integer"
              }
            },
            "required": [
              "by_side",
              "premium",
              "trades",
              "volume"
            ],
            "type": "object"
          },
          "ratios": {
            "additionalProperties": false,
            "description": "Put/call ratios.",
            "properties": {
              "call_share_of_trades": {
                "description": "Share of prints that are calls.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "put_call_premium": {
                "description": "Put premium over call premium.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "put_call_trades": {
                "description": "Put prints over call prints.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "put_call_volume": {
                "description": "Put volume over call volume.",
                "type": [
                  "number",
                  "null"
                ]
              }
            },
            "required": [
              "call_share_of_trades",
              "put_call_premium",
              "put_call_trades",
              "put_call_volume"
            ],
            "type": "object"
          },
          "sentiment": {
            "additionalProperties": false,
            "description": "Premium by implied direction.",
            "properties": {
              "bearish_premium": {
                "description": "Premium of bearish prints (puts bought, calls sold).",
                "type": [
                  "number",
                  "null"
                ]
              },
              "bullish_premium": {
                "description": "Premium of bullish prints (calls bought, puts sold).",
                "type": [
                  "number",
                  "null"
                ]
              },
              "label": {
                "description": "The larger of the bullish and bearish premium.",
                "enum": [
                  "bullish",
                  "bearish",
                  "neutral"
                ],
                "type": "string"
              },
              "neutral_premium": {
                "description": "Premium of prints at the mid.",
                "type": [
                  "number",
                  "null"
                ]
              }
            },
            "required": [
              "bearish_premium",
              "bullish_premium",
              "label",
              "neutral_premium"
            ],
            "type": "object"
          },
          "session": {
            "description": "Session covered.",
            "enum": [
              "rth",
              "gth",
              "curb",
              "all"
            ],
            "type": "string"
          },
          "trading_date": {
            "description": "Trading date of the statistics.",
            "format": "date",
            "type": "string"
          },
          "underlying_symbol": {
            "description": "The requested underlying.",
            "type": "string"
          }
        },
        "required": [
          "call",
          "delta_notional",
          "largest_prints",
          "open_interest",
          "order_types",
          "put",
          "ratios",
          "sentiment",
          "session",
          "trading_date",
          "underlying_symbol"
        ],
        "type": "object"
      },
      "OptionsFlowStrikeActivityRow": {
        "additionalProperties": false,
        "description": "Executed premium at one strike.",
        "properties": {
          "call_ask_premium": {
            "description": "Call premium executed at the ask.",
            "type": "number"
          },
          "call_bid_premium": {
            "description": "Call premium executed at the bid.",
            "type": "number"
          },
          "call_premium": {
            "description": "Call premium in US dollars.",
            "type": "number"
          },
          "net_call_premium": {
            "description": "Call ask premium minus bid premium.",
            "type": "number"
          },
          "net_put_premium": {
            "description": "Put ask premium minus bid premium.",
            "type": "number"
          },
          "put_ask_premium": {
            "description": "Put premium executed at the ask.",
            "type": "number"
          },
          "put_bid_premium": {
            "description": "Put premium executed at the bid.",
            "type": "number"
          },
          "put_premium": {
            "description": "Put premium in US dollars.",
            "type": "number"
          },
          "strike": {
            "description": "Strike in dollars.",
            "type": "number"
          },
          "trades": {
            "description": "Prints.",
            "type": "integer"
          },
          "unclassified_premium": {
            "description": "Premium executed inside or outside the spread, or without a quote.",
            "type": "number"
          },
          "volume": {
            "description": "Contracts traded.",
            "type": "integer"
          }
        },
        "required": [
          "call_ask_premium",
          "call_bid_premium",
          "call_premium",
          "net_call_premium",
          "net_put_premium",
          "put_ask_premium",
          "put_bid_premium",
          "put_premium",
          "strike",
          "trades",
          "unclassified_premium",
          "volume"
        ],
        "type": "object"
      },
      "OptionsFlowUnusualRow": {
        "additionalProperties": false,
        "description": "One consolidated order.",
        "properties": {
          "contract_type": {
            "description": "Call or put.",
            "enum": [
              "call",
              "put"
            ],
            "type": "string"
          },
          "date_of_expiry": {
            "description": "Expiration date.",
            "format": "date",
            "type": "string"
          },
          "days_to_expiry": {
            "description": "Calendar days from the trading date to expiration.",
            "type": "integer"
          },
          "end_timestamp": {
            "description": "Time of the last print. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "exchange_count": {
            "description": "Exchanges the order executed on.",
            "type": "integer"
          },
          "flags": {
            "description": "Condition flags: iso (intermarket sweep), auction, cross, floor, complex (multi-leg order), tied, implied, ext_hours, late, cancelled, aggressor_hint, post_cash_close, vol_gt_oi (day volume above open interest), size_gt_oi (print size above open interest), no_side.",
            "items": {
              "description": "A condition flag.",
              "enum": [
                "iso",
                "auction",
                "cross",
                "floor",
                "complex",
                "tied",
                "implied",
                "ext_hours",
                "late",
                "cancelled",
                "aggressor_hint",
                "post_cash_close",
                "vol_gt_oi",
                "size_gt_oi",
                "no_side"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "id": {
            "description": "Identifier of the order (the sweep or split, or the print for a single).",
            "type": "string"
          },
          "is_block": {
            "description": "A block order.",
            "type": "boolean"
          },
          "is_golden": {
            "description": "A golden sweep: a sweep of at least $1,000,000 premium.",
            "type": "boolean"
          },
          "legs": {
            "description": "Prints in the order.",
            "type": "integer"
          },
          "open_interest": {
            "description": "Open interest of the contract at the start of the trading date.",
            "type": [
              "integer",
              "null"
            ]
          },
          "otm_percent": {
            "description": "How far out of the money the strike is, in percent of the underlying price.",
            "type": [
              "number",
              "null"
            ]
          },
          "premium": {
            "description": "Premium in US dollars.",
            "type": "number"
          },
          "price": {
            "description": "Volume-weighted price per share.",
            "type": "number"
          },
          "sentiment": {
            "description": "Direction implied by the side: bullish (calls bought or puts sold), bearish (puts bought or calls sold), neutral (traded at the mid) or unknown.",
            "enum": [
              "bullish",
              "bearish",
              "neutral",
              "unknown"
            ],
            "type": "string"
          },
          "side": {
            "description": "Aggressor class of the order's most aggressive print: above_ask, ask (at or near the ask), mid, bid (at or near the bid), below_bid, or unknown.",
            "enum": [
              "above_ask",
              "ask",
              "mid",
              "bid",
              "below_bid",
              "unknown"
            ],
            "type": "string"
          },
          "size": {
            "description": "Contracts traded.",
            "type": "integer"
          },
          "strike": {
            "description": "Strike in dollars.",
            "type": "number"
          },
          "timestamp": {
            "description": "Time of the first print. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "trade_type": {
            "description": "Print or order type. Sweeps and splits are inferred groupings of prints, not exchange-confirmed.",
            "enum": [
              "sweep",
              "split",
              "single",
              "multileg",
              "cross",
              "floor"
            ],
            "type": "string"
          },
          "underlying_price": {
            "description": "Underlying price at execution; null when unknown.",
            "type": [
              "number",
              "null"
            ]
          },
          "underlying_symbol": {
            "description": "Option root of the contract, for example SPXW.",
            "type": "string"
          }
        },
        "required": [
          "contract_type",
          "date_of_expiry",
          "days_to_expiry",
          "end_timestamp",
          "exchange_count",
          "flags",
          "id",
          "is_block",
          "is_golden",
          "legs",
          "open_interest",
          "otm_percent",
          "premium",
          "price",
          "sentiment",
          "side",
          "size",
          "strike",
          "timestamp",
          "trade_type",
          "underlying_price",
          "underlying_symbol"
        ],
        "type": "object"
      },
      "OptionsLevelsHistoryRow": {
        "additionalProperties": false,
        "description": "Key levels at one time of a session.",
        "properties": {
          "call_wall": {
            "description": "Call wall.",
            "type": [
              "number",
              "null"
            ]
          },
          "gamma_flip": {
            "description": "Gamma flip (model-derived).",
            "type": [
              "number",
              "null"
            ]
          },
          "largest_absolute_gamma_strike": {
            "description": "Strike of the largest absolute gamma.",
            "type": [
              "number",
              "null"
            ]
          },
          "largest_cell_strike": {
            "description": "Strike of the largest strike-by-expiration cell.",
            "type": [
              "number",
              "null"
            ]
          },
          "net_exposure": {
            "description": "Net modeled gamma exposure.",
            "type": [
              "number",
              "null"
            ]
          },
          "put_wall": {
            "description": "Put wall.",
            "type": [
              "number",
              "null"
            ]
          },
          "timestamp": {
            "description": "Valuation time. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "underlying_price": {
            "description": "Underlying price.",
            "type": [
              "number",
              "null"
            ]
          }
        },
        "required": [
          "call_wall",
          "gamma_flip",
          "largest_absolute_gamma_strike",
          "largest_cell_strike",
          "net_exposure",
          "put_wall",
          "timestamp",
          "underlying_price"
        ],
        "type": "object"
      },
      "OptionsLevelsRow": {
        "additionalProperties": false,
        "description": "Key levels of the modeled exposure.",
        "properties": {
          "greek": {
            "description": "The measure: gamma, delta, vanna, charm or the heat map metric.",
            "type": "string"
          },
          "levels": {
            "additionalProperties": false,
            "description": "The levels.",
            "properties": {
              "call_wall": {
                "description": "Strike of the largest positive call exposure.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "call_wall_above": {
                "description": "At or above the underlying price: strike of the largest positive net exposure.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "charm_max_absolute_strike": {
                "description": "Strike of the largest absolute net charm (include=charm).",
                "type": [
                  "number",
                  "null"
                ]
              },
              "delta_key_strike": {
                "description": "Strike of the largest absolute net delta (include=delta).",
                "type": [
                  "number",
                  "null"
                ]
              },
              "expected_move": {
                "additionalProperties": false,
                "description": "One-standard-deviation move to the nearest expiration.",
                "properties": {
                  "date_of_expiry": {
                    "description": "Expiration.",
                    "format": "date",
                    "type": "string"
                  },
                  "expected_move": {
                    "description": "Move in index points or dollars: price x volatility x square root of time.",
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "implied_volatility": {
                    "description": "At-the-money implied volatility.",
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "one_sigma_band": {
                    "description": "Lower and upper bound.",
                    "items": {
                      "type": "number"
                    },
                    "type": "array"
                  },
                  "straddle": {
                    "description": "At-the-money straddle price.",
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "straddle_expected_move": {
                    "description": "Expected move implied by the straddle.",
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "two_sigma_band": {
                    "description": "Lower and upper bound.",
                    "items": {
                      "type": "number"
                    },
                    "type": "array"
                  }
                },
                "required": [
                  "date_of_expiry",
                  "expected_move",
                  "implied_volatility",
                  "one_sigma_band",
                  "straddle",
                  "straddle_expected_move",
                  "two_sigma_band"
                ],
                "type": [
                  "object",
                  "null"
                ]
              },
              "gamma_flip": {
                "description": "Underlying price where net modeled gamma changes sign, nearest the current price. Model-derived (sticky-strike repricing), not observed.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "gamma_flip_candidates": {
                "description": "Every price where net modeled gamma changes sign.",
                "items": {
                  "type": "number"
                },
                "type": "array"
              },
              "gamma_flip_excluding_0dte": {
                "description": "The gamma flip with the contracts expiring on the trading date removed.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "gamma_flip_far_from_underlying": {
                "description": "The gamma flip lies beyond the swept range around the underlying price.",
                "type": [
                  "boolean",
                  "null"
                ]
              },
              "gamma_tilt": {
                "description": "Positive call gamma over the absolute negative put gamma.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "gatekeepers": {
                "description": "Strikes between the underlying price and the peak net exposure with at least the gatekeeper ratio of its absolute exposure.",
                "items": {
                  "type": "number"
                },
                "type": "array"
              },
              "largest_absolute_strike": {
                "description": "Strike of the largest absolute exposure.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "largest_cell": {
                "additionalProperties": false,
                "description": "The strike and expiration of the largest absolute net exposure.",
                "properties": {
                  "date_of_expiry": {
                    "description": "Expiration.",
                    "format": "date",
                    "type": "string"
                  },
                  "strike": {
                    "description": "Strike.",
                    "type": "number"
                  },
                  "value": {
                    "description": "Exposure.",
                    "type": "number"
                  }
                },
                "required": [
                  "date_of_expiry",
                  "strike",
                  "value"
                ],
                "type": [
                  "object",
                  "null"
                ]
              },
              "major_negative": {
                "description": "Strike of the most negative net exposure.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "major_positive": {
                "description": "Strike of the largest positive net exposure.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "max_pain": {
                "additionalProperties": false,
                "description": "Max pain of the nearest expiration.",
                "properties": {
                  "date_of_expiry": {
                    "description": "Expiration.",
                    "format": "date",
                    "type": "string"
                  },
                  "strike": {
                    "description": "Strike.",
                    "type": "number"
                  }
                },
                "required": [
                  "date_of_expiry",
                  "strike"
                ],
                "type": [
                  "object",
                  "null"
                ]
              },
              "next_expiration_share": {
                "description": "Share of absolute gamma in the nearest expiration.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "peak_net_exposure": {
                "additionalProperties": false,
                "description": "A strike and its value.",
                "properties": {
                  "strike": {
                    "description": "Strike.",
                    "type": "number"
                  },
                  "value": {
                    "description": "Exposure at the strike.",
                    "type": "number"
                  }
                },
                "required": [
                  "strike",
                  "value"
                ],
                "type": [
                  "object",
                  "null"
                ]
              },
              "put_wall": {
                "description": "Strike of the largest negative put exposure.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "put_wall_below": {
                "description": "At or below the underlying price: strike of the most negative net exposure.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "regime": {
                "additionalProperties": false,
                "description": "Sign of the net modeled gamma relative to its absolute size. A description of the model, not a forecast.",
                "properties": {
                  "absolute": {
                    "description": "Absolute exposure.",
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "label": {
                    "description": "positive (net/absolute at least 0.05), negative (at most -0.05) or neutral.",
                    "enum": [
                      "positive",
                      "negative",
                      "neutral"
                    ],
                    "type": "string"
                  },
                  "net": {
                    "description": "Net exposure.",
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "ratio": {
                    "description": "Net over absolute exposure.",
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "underlying_vs_gamma_flip": {
                    "description": "Where the underlying price is relative to the gamma flip.",
                    "enum": [
                      "above",
                      "below",
                      "none"
                    ],
                    "type": "string"
                  }
                },
                "required": [
                  "absolute",
                  "label",
                  "net",
                  "ratio",
                  "underlying_vs_gamma_flip"
                ],
                "type": "object"
              },
              "vanna_levels": {
                "additionalProperties": false,
                "description": "Vanna key strikes (include=vanna).",
                "properties": {
                  "max": {
                    "description": "Largest net vanna strike.",
                    "type": [
                      "number",
                      "null"
                    ]
                  },
                  "min": {
                    "description": "Most negative net vanna strike.",
                    "type": [
                      "number",
                      "null"
                    ]
                  }
                },
                "required": [
                  "max",
                  "min"
                ],
                "type": [
                  "object",
                  "null"
                ]
              }
            },
            "required": [
              "call_wall",
              "call_wall_above",
              "charm_max_absolute_strike",
              "delta_key_strike",
              "expected_move",
              "gamma_flip",
              "gamma_flip_candidates",
              "gamma_flip_excluding_0dte",
              "gamma_flip_far_from_underlying",
              "gamma_tilt",
              "gatekeepers",
              "largest_absolute_strike",
              "largest_cell",
              "major_negative",
              "major_positive",
              "max_pain",
              "next_expiration_share",
              "peak_net_exposure",
              "put_wall",
              "put_wall_below",
              "regime",
              "vanna_levels"
            ],
            "type": "object"
          },
          "model": {
            "description": "Dealer positioning model.",
            "enum": [
              "classic_oi",
              "flow_adjusted"
            ],
            "type": "string"
          },
          "perspective": {
            "description": "dealer or customer (customer negates the values).",
            "enum": [
              "dealer",
              "customer"
            ],
            "type": "string"
          },
          "positioning_model": {
            "description": "Name and version of the positioning assumption, for example oi_signed_proxy-v1.",
            "type": "string"
          },
          "ranked": {
            "additionalProperties": false,
            "description": "The five largest strikes per side by absolute exposure, in the exposure's own units.",
            "properties": {
              "calls": {
                "description": "Call side.",
                "items": {
                  "additionalProperties": false,
                  "description": "A ranked strike.",
                  "properties": {
                    "distance_percent": {
                      "description": "Distance in percent of the underlying price.",
                      "type": [
                        "number",
                        "null"
                      ]
                    },
                    "distance_points": {
                      "description": "Strike minus the underlying price.",
                      "type": "number"
                    },
                    "rank": {
                      "description": "1 is the largest.",
                      "type": "integer"
                    },
                    "strike": {
                      "description": "Strike.",
                      "type": "number"
                    },
                    "value": {
                      "description": "Exposure.",
                      "type": "number"
                    }
                  },
                  "required": [
                    "distance_percent",
                    "distance_points",
                    "rank",
                    "strike",
                    "value"
                  ],
                  "type": "object"
                },
                "type": "array"
              },
              "gross": {
                "description": "Gross (calls plus absolute puts).",
                "items": {
                  "additionalProperties": false,
                  "description": "A ranked strike.",
                  "properties": {
                    "distance_percent": {
                      "description": "Distance in percent of the underlying price.",
                      "type": [
                        "number",
                        "null"
                      ]
                    },
                    "distance_points": {
                      "description": "Strike minus the underlying price.",
                      "type": "number"
                    },
                    "rank": {
                      "description": "1 is the largest.",
                      "type": "integer"
                    },
                    "strike": {
                      "description": "Strike.",
                      "type": "number"
                    },
                    "value": {
                      "description": "Exposure.",
                      "type": "number"
                    }
                  },
                  "required": [
                    "distance_percent",
                    "distance_points",
                    "rank",
                    "strike",
                    "value"
                  ],
                  "type": "object"
                },
                "type": "array"
              },
              "net": {
                "description": "Net.",
                "items": {
                  "additionalProperties": false,
                  "description": "A ranked strike.",
                  "properties": {
                    "distance_percent": {
                      "description": "Distance in percent of the underlying price.",
                      "type": [
                        "number",
                        "null"
                      ]
                    },
                    "distance_points": {
                      "description": "Strike minus the underlying price.",
                      "type": "number"
                    },
                    "rank": {
                      "description": "1 is the largest.",
                      "type": "integer"
                    },
                    "strike": {
                      "description": "Strike.",
                      "type": "number"
                    },
                    "value": {
                      "description": "Exposure.",
                      "type": "number"
                    }
                  },
                  "required": [
                    "distance_percent",
                    "distance_points",
                    "rank",
                    "strike",
                    "value"
                  ],
                  "type": "object"
                },
                "type": "array"
              },
              "puts": {
                "description": "Put side.",
                "items": {
                  "additionalProperties": false,
                  "description": "A ranked strike.",
                  "properties": {
                    "distance_percent": {
                      "description": "Distance in percent of the underlying price.",
                      "type": [
                        "number",
                        "null"
                      ]
                    },
                    "distance_points": {
                      "description": "Strike minus the underlying price.",
                      "type": "number"
                    },
                    "rank": {
                      "description": "1 is the largest.",
                      "type": "integer"
                    },
                    "strike": {
                      "description": "Strike.",
                      "type": "number"
                    },
                    "value": {
                      "description": "Exposure.",
                      "type": "number"
                    }
                  },
                  "required": [
                    "distance_percent",
                    "distance_points",
                    "rank",
                    "strike",
                    "value"
                  ],
                  "type": "object"
                },
                "type": "array"
              }
            },
            "required": [
              "calls",
              "gross",
              "net",
              "puts"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "roots": {
            "description": "Option roots included.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "session": {
            "description": "Session valued.",
            "enum": [
              "rth",
              "gth",
              "curb",
              "all"
            ],
            "type": "string"
          },
          "trading_date": {
            "description": "Trading date valued.",
            "format": "date",
            "type": "string"
          },
          "underlying_price": {
            "description": "Underlying price used.",
            "type": [
              "number",
              "null"
            ]
          },
          "underlying_symbol": {
            "description": "The requested underlying.",
            "type": "string"
          },
          "unit": {
            "description": "Scale of the values.",
            "enum": [
              "per_percent",
              "per_dollar",
              "raw"
            ],
            "type": "string"
          },
          "unit_label": {
            "description": "What one unit is, for example usd_per_pct: dollars of dealer hedging per 1% move.",
            "type": "string"
          },
          "valuation": {
            "additionalProperties": false,
            "description": "What the snapshot was valued on.",
            "properties": {
              "chain_timestamp": {
                "description": "Time of the option chain the valuation used. Unix epoch milliseconds (UTC).",
                "format": "unix-ms",
                "type": [
                  "integer",
                  "null"
                ]
              },
              "open_interest_date": {
                "description": "Date of the open interest the positioning is based on.",
                "format": "date",
                "type": [
                  "string",
                  "null"
                ]
              },
              "risk_free_rate": {
                "description": "Continuously compounded risk-free rate used.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "timestamp": {
                "description": "Valuation time. Unix epoch milliseconds (UTC).",
                "format": "unix-ms",
                "type": [
                  "integer",
                  "null"
                ]
              },
              "underlying_price": {
                "description": "Underlying price used.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "underlying_stale": {
                "description": "The underlying price is older than the freshness limit.",
                "type": "boolean"
              },
              "underlying_timestamp": {
                "description": "Time of the underlying price. Unix epoch milliseconds (UTC).",
                "format": "unix-ms",
                "type": [
                  "integer",
                  "null"
                ]
              }
            },
            "required": [
              "chain_timestamp",
              "open_interest_date",
              "risk_free_rate",
              "timestamp",
              "underlying_price",
              "underlying_stale",
              "underlying_timestamp"
            ],
            "type": "object"
          }
        },
        "required": [
          "greek",
          "levels",
          "model",
          "perspective",
          "positioning_model",
          "ranked",
          "roots",
          "session",
          "trading_date",
          "underlying_price",
          "underlying_symbol",
          "unit",
          "unit_label",
          "valuation"
        ],
        "type": "object"
      },
      "OptionsMarketMapRow": {
        "additionalProperties": false,
        "description": "Positioning and flow context.",
        "properties": {
          "exposure_model": {
            "description": "Name of the positioning assumption behind the exposures, for example oi_signed_proxy-v1: a model, not an observation.",
            "type": "string"
          },
          "exposure_unit": {
            "description": "What one unit of exposure is.",
            "type": "string"
          },
          "flow": {
            "additionalProperties": false,
            "description": "Session flow totals.",
            "properties": {
              "call_premium": {
                "description": "Call premium in US dollars.",
                "type": "number"
              },
              "net_call_premium": {
                "description": "Call premium at the ask minus at the bid.",
                "type": "number"
              },
              "net_put_premium": {
                "description": "Put premium at the ask minus at the bid.",
                "type": "number"
              },
              "put_premium": {
                "description": "Put premium in US dollars.",
                "type": "number"
              },
              "trades": {
                "description": "Prints.",
                "type": "integer"
              },
              "volume": {
                "description": "Contracts traded.",
                "type": "integer"
              }
            },
            "required": [
              "call_premium",
              "net_call_premium",
              "net_put_premium",
              "put_premium",
              "trades",
              "volume"
            ],
            "type": "object"
          },
          "futures_mapping": {
            "additionalProperties": false,
            "description": "Index to dated futures mapping, when fresh references exist.",
            "properties": {
              "basis": {
                "description": "Futures minus index.",
                "type": "number"
              },
              "contract": {
                "description": "Futures contract.",
                "type": "string"
              },
              "futures_reference": {
                "description": "Futures price.",
                "type": "number"
              },
              "index_reference": {
                "description": "Index level.",
                "type": "number"
              }
            },
            "required": [
              "basis",
              "contract",
              "futures_reference",
              "index_reference"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "strikes": {
            "description": "Strikes, ascending.",
            "items": {
              "additionalProperties": false,
              "description": "One strike.",
              "properties": {
                "call_exposure": {
                  "description": "Modeled call exposure.",
                  "type": "number"
                },
                "call_premium": {
                  "description": "Call premium executed.",
                  "type": "number"
                },
                "gross_exposure": {
                  "description": "Gross exposure.",
                  "type": "number"
                },
                "net_call_premium": {
                  "description": "Call ask minus bid premium.",
                  "type": "number"
                },
                "net_exposure": {
                  "description": "Net exposure.",
                  "type": "number"
                },
                "net_put_premium": {
                  "description": "Put ask minus bid premium.",
                  "type": "number"
                },
                "put_exposure": {
                  "description": "Modeled put exposure.",
                  "type": "number"
                },
                "put_premium": {
                  "description": "Put premium executed.",
                  "type": "number"
                },
                "strike": {
                  "description": "Strike.",
                  "type": "number"
                },
                "trades": {
                  "description": "Prints.",
                  "type": "integer"
                },
                "volume": {
                  "description": "Contracts traded.",
                  "type": "integer"
                }
              },
              "required": [
                "call_exposure",
                "call_premium",
                "gross_exposure",
                "net_call_premium",
                "net_exposure",
                "net_put_premium",
                "put_exposure",
                "put_premium",
                "strike",
                "trades",
                "volume"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "totals": {
            "additionalProperties": false,
            "description": "Exposure totals.",
            "properties": {
              "call": {
                "description": "Calls.",
                "type": "number"
              },
              "gross": {
                "description": "Gross.",
                "type": "number"
              },
              "net": {
                "description": "Net.",
                "type": "number"
              },
              "put": {
                "description": "Puts.",
                "type": "number"
              }
            },
            "required": [
              "call",
              "gross",
              "net",
              "put"
            ],
            "type": "object"
          },
          "underlying_price": {
            "description": "Underlying price.",
            "type": [
              "number",
              "null"
            ]
          },
          "underlying_symbol": {
            "description": "The requested underlying.",
            "type": "string"
          }
        },
        "required": [
          "exposure_model",
          "exposure_unit",
          "flow",
          "futures_mapping",
          "strikes",
          "totals",
          "underlying_price",
          "underlying_symbol"
        ],
        "type": "object"
      },
      "OptionsMaxPainRow": {
        "additionalProperties": false,
        "description": "Max pain analysis.",
        "properties": {
          "by_expiration": {
            "description": "Max pain of every expiration within max_dte.",
            "items": {
              "additionalProperties": false,
              "description": "One expiration.",
              "properties": {
                "date_of_expiry": {
                  "description": "Expiration.",
                  "format": "date",
                  "type": "string"
                },
                "days_to_expiry": {
                  "description": "Days from the trading date.",
                  "type": "integer"
                },
                "max_pain": {
                  "description": "Max pain strike.",
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "total_open_interest": {
                  "description": "Calls plus puts open interest.",
                  "type": "integer"
                }
              },
              "required": [
                "date_of_expiry",
                "days_to_expiry",
                "max_pain",
                "total_open_interest"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "date_of_expiry": {
            "description": "The analysed expiration.",
            "format": "date",
            "type": "string"
          },
          "history": {
            "description": "Max pain of the analysed expiration on each stored open interest date.",
            "items": {
              "additionalProperties": false,
              "description": "One date.",
              "properties": {
                "date": {
                  "description": "Open interest date.",
                  "format": "date",
                  "type": "string"
                },
                "max_pain": {
                  "description": "Max pain strike.",
                  "type": [
                    "number",
                    "null"
                  ]
                }
              },
              "required": [
                "date",
                "max_pain"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "max_pain": {
            "description": "Strike at which the total payout to option holders is smallest.",
            "type": [
              "number",
              "null"
            ]
          },
          "open_interest_date": {
            "description": "Date of the open interest used.",
            "format": "date",
            "type": "string"
          },
          "payouts": {
            "description": "Payout if the underlying settled at each strike.",
            "items": {
              "additionalProperties": false,
              "description": "One strike.",
              "properties": {
                "call_payout": {
                  "description": "Payout to call holders in US dollars.",
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "put_payout": {
                  "description": "Payout to put holders in US dollars.",
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "strike": {
                  "description": "Strike.",
                  "type": "number"
                },
                "total_payout": {
                  "description": "Total payout in US dollars.",
                  "type": [
                    "number",
                    "null"
                  ]
                }
              },
              "required": [
                "call_payout",
                "put_payout",
                "strike",
                "total_payout"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "trading_date": {
            "description": "Trading date.",
            "format": "date",
            "type": "string"
          },
          "underlying_price": {
            "description": "Underlying price.",
            "type": [
              "number",
              "null"
            ]
          },
          "underlying_symbol": {
            "description": "The requested underlying.",
            "type": "string"
          }
        },
        "required": [
          "by_expiration",
          "date_of_expiry",
          "history",
          "max_pain",
          "open_interest_date",
          "payouts",
          "trading_date",
          "underlying_price",
          "underlying_symbol"
        ],
        "type": "object"
      },
      "OptionsOpenInterestChangeRow": {
        "additionalProperties": false,
        "description": "Open interest change of one contract.",
        "properties": {
          "change": {
            "description": "Current minus previous.",
            "type": "integer"
          },
          "change_percent": {
            "description": "Change in percent of the previous open interest; null when it was zero.",
            "type": [
              "number",
              "null"
            ]
          },
          "contract_type": {
            "description": "Call or put.",
            "enum": [
              "call",
              "put"
            ],
            "type": "string"
          },
          "current_open_interest": {
            "description": "Open interest on the latest date.",
            "type": "integer"
          },
          "date_of_expiry": {
            "description": "Expiration date.",
            "format": "date",
            "type": "string"
          },
          "is_new_listing": {
            "description": "The contract was listed after the previous date.",
            "type": "boolean"
          },
          "previous_open_interest": {
            "description": "Open interest on the previous date.",
            "type": "integer"
          },
          "strike": {
            "description": "Strike in dollars.",
            "type": "number"
          },
          "underlying_symbol": {
            "description": "Option root of the contract.",
            "type": "string"
          }
        },
        "required": [
          "change",
          "change_percent",
          "contract_type",
          "current_open_interest",
          "date_of_expiry",
          "is_new_listing",
          "previous_open_interest",
          "strike",
          "underlying_symbol"
        ],
        "type": "object"
      },
      "OptionsOpenInterestHistoryRow": {
        "additionalProperties": false,
        "description": "Open interest on one date.",
        "properties": {
          "call_open_interest": {
            "description": "Call open interest.",
            "type": [
              "integer",
              "null"
            ]
          },
          "date": {
            "description": "Open interest date.",
            "format": "date",
            "type": "string"
          },
          "put_open_interest": {
            "description": "Put open interest.",
            "type": [
              "integer",
              "null"
            ]
          },
          "total_open_interest": {
            "description": "Calls plus puts.",
            "type": [
              "integer",
              "null"
            ]
          }
        },
        "required": [
          "call_open_interest",
          "date",
          "put_open_interest",
          "total_open_interest"
        ],
        "type": "object"
      },
      "OptionsOpenInterestRow": {
        "additionalProperties": false,
        "description": "Open interest by strike or expiration.",
        "properties": {
          "group_by": {
            "description": "Row grouping.",
            "enum": [
              "strike",
              "expiration"
            ],
            "type": "string"
          },
          "open_interest_date": {
            "description": "Date of the open interest.",
            "format": "date",
            "type": "string"
          },
          "roots": {
            "description": "Option roots included.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "rows": {
            "description": "Rows, ascending by strike or expiration.",
            "items": {
              "additionalProperties": false,
              "description": "One strike (group_by=strike) or expiration (group_by=expiration).",
              "properties": {
                "call_open_interest": {
                  "description": "Call open interest.",
                  "type": "integer"
                },
                "date_of_expiry": {
                  "description": "Expiration; present when grouped by expiration.",
                  "format": "date",
                  "type": "string"
                },
                "put_open_interest": {
                  "description": "Put open interest.",
                  "type": "integer"
                },
                "strike": {
                  "description": "Strike; present when grouped by strike.",
                  "type": "number"
                },
                "total_open_interest": {
                  "description": "Calls plus puts.",
                  "type": "integer"
                }
              },
              "required": [
                "call_open_interest",
                "put_open_interest",
                "total_open_interest"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "totals": {
            "additionalProperties": false,
            "description": "Totals over the rows.",
            "properties": {
              "call": {
                "description": "Call open interest.",
                "type": "integer"
              },
              "put": {
                "description": "Put open interest.",
                "type": "integer"
              },
              "put_call_ratio": {
                "description": "Put over call open interest.",
                "type": [
                  "number",
                  "null"
                ]
              }
            },
            "required": [
              "call",
              "put",
              "put_call_ratio"
            ],
            "type": "object"
          },
          "trading_date": {
            "description": "Trading date.",
            "format": "date",
            "type": "string"
          },
          "underlying_price": {
            "description": "Underlying price.",
            "type": [
              "number",
              "null"
            ]
          },
          "underlying_symbol": {
            "description": "The requested underlying.",
            "type": "string"
          }
        },
        "required": [
          "group_by",
          "open_interest_date",
          "roots",
          "rows",
          "totals",
          "trading_date",
          "underlying_price",
          "underlying_symbol"
        ],
        "type": "object"
      },
      "OptionsScreenerRow": {
        "additionalProperties": false,
        "description": "A contract (grain=contract) or an underlying (grain=ticker). Only the fields of the requested grain are present; a value that could not be computed is null.",
        "properties": {
          "ask": {
            "description": "Ask.",
            "type": [
              "number",
              "null"
            ]
          },
          "ask_percent": {
            "description": "Share of volume at the ask side, percent.",
            "type": [
              "number",
              "null"
            ]
          },
          "average_size": {
            "description": "Average print size in contracts.",
            "type": [
              "number",
              "null"
            ]
          },
          "bid": {
            "description": "Bid.",
            "type": [
              "number",
              "null"
            ]
          },
          "bid_percent": {
            "description": "Share of volume at the bid side, percent.",
            "type": [
              "number",
              "null"
            ]
          },
          "block_count": {
            "description": "Blocks.",
            "type": [
              "number",
              "null"
            ]
          },
          "block_premium": {
            "description": "Block premium in US dollars.",
            "type": [
              "number",
              "null"
            ]
          },
          "call_volume": {
            "description": "Call contracts.",
            "type": [
              "number",
              "null"
            ]
          },
          "call_wall_distance_percent": {
            "description": "Distance to the call wall, percent.",
            "type": [
              "number",
              "null"
            ]
          },
          "change_percent": {
            "description": "Change of the last price from the previous close, percent.",
            "type": [
              "number",
              "null"
            ]
          },
          "contract_type": {
            "description": "call or put.",
            "type": [
              "string",
              "null"
            ]
          },
          "cross_percent": {
            "description": "Share of volume in crosses, percent.",
            "type": [
              "number",
              "null"
            ]
          },
          "date_of_expiry": {
            "description": "Expiration date.",
            "type": [
              "string",
              "null"
            ]
          },
          "days_to_expiry": {
            "description": "Calendar days to expiration.",
            "type": [
              "number",
              "null"
            ]
          },
          "delta": {
            "description": "Delta.",
            "type": [
              "number",
              "null"
            ]
          },
          "delta_exposure": {
            "description": "Modeled dealer delta exposure of the open interest.",
            "type": [
              "number",
              "null"
            ]
          },
          "estimated_opening_contracts": {
            "description": "Estimated contracts opened today.",
            "type": [
              "number",
              "null"
            ]
          },
          "expected_move_1d_percent": {
            "description": "One-day expected move, percent.",
            "type": [
              "number",
              "null"
            ]
          },
          "flags": {
            "description": "Row flags: unusual, golden, vol_gt_oi, size_gt_oi, sweep, block, repeated.",
            "items": {
              "description": "A row flag.",
              "enum": [
                "unusual",
                "golden",
                "vol_gt_oi",
                "size_gt_oi",
                "sweep",
                "block",
                "repeated"
              ],
              "type": "string"
            },
            "type": [
              "array",
              "null"
            ]
          },
          "floor_percent": {
            "description": "Share of volume in floor prints, percent.",
            "type": [
              "number",
              "null"
            ]
          },
          "gamma": {
            "description": "Gamma.",
            "type": [
              "number",
              "null"
            ]
          },
          "gamma_exposure": {
            "description": "Modeled dealer gamma exposure of the open interest.",
            "type": [
              "number",
              "null"
            ]
          },
          "gamma_flip_distance_percent": {
            "description": "Distance from the underlying price to the gamma flip, percent.",
            "type": [
              "number",
              "null"
            ]
          },
          "gamma_tilt": {
            "description": "Positive call gamma over the absolute negative put gamma.",
            "type": [
              "number",
              "null"
            ]
          },
          "golden_sweep_count": {
            "description": "Golden sweeps.",
            "type": [
              "number",
              "null"
            ]
          },
          "implied_volatility": {
            "description": "Implied volatility as a decimal.",
            "type": [
              "number",
              "null"
            ]
          },
          "implied_volatility_vs_atm": {
            "description": "Implied volatility minus the at-the-money volatility.",
            "type": [
              "number",
              "null"
            ]
          },
          "iso_percent": {
            "description": "Share of volume in intermarket sweep orders, percent.",
            "type": [
              "number",
              "null"
            ]
          },
          "iv30": {
            "description": "30-day at-the-money implied volatility.",
            "type": [
              "number",
              "null"
            ]
          },
          "iv30_change": {
            "description": "Change of the 30-day volatility versus the previous close.",
            "type": [
              "number",
              "null"
            ]
          },
          "iv_percentile": {
            "description": "One-year implied volatility percentile, 0 to 1.",
            "type": [
              "number",
              "null"
            ]
          },
          "iv_rank": {
            "description": "One-year implied volatility rank, 0 to 1.",
            "type": [
              "number",
              "null"
            ]
          },
          "largest_print_premium": {
            "description": "Premium of the largest print in US dollars.",
            "type": [
              "number",
              "null"
            ]
          },
          "last_price": {
            "description": "Last price.",
            "type": [
              "number",
              "null"
            ]
          },
          "max_pain_distance_percent": {
            "description": "Distance to max pain, percent.",
            "type": [
              "number",
              "null"
            ]
          },
          "mid": {
            "description": "Mid price.",
            "type": [
              "number",
              "null"
            ]
          },
          "mid_percent": {
            "description": "Share of volume at the mid, percent.",
            "type": [
              "number",
              "null"
            ]
          },
          "moneyness": {
            "description": "itm, atm or otm.",
            "type": [
              "string",
              "null"
            ]
          },
          "multileg_percent": {
            "description": "Share of volume in multi-leg prints, percent.",
            "type": [
              "number",
              "null"
            ]
          },
          "net_call_premium": {
            "description": "Net call premium in US dollars.",
            "type": [
              "number",
              "null"
            ]
          },
          "net_gamma_exposure": {
            "description": "Net modeled dealer gamma exposure.",
            "type": [
              "number",
              "null"
            ]
          },
          "net_premium": {
            "description": "Ask-side minus bid-side premium in US dollars.",
            "type": [
              "number",
              "null"
            ]
          },
          "net_put_premium": {
            "description": "Net put premium in US dollars.",
            "type": [
              "number",
              "null"
            ]
          },
          "next_expiration_share": {
            "description": "Share of gamma in the nearest expiration.",
            "type": [
              "number",
              "null"
            ]
          },
          "open_interest": {
            "description": "Open interest.",
            "type": [
              "number",
              "null"
            ]
          },
          "open_interest_change": {
            "description": "Open interest change versus the previous date.",
            "type": [
              "number",
              "null"
            ]
          },
          "open_interest_change_percent": {
            "description": "That change in percent.",
            "type": [
              "number",
              "null"
            ]
          },
          "option_volume": {
            "description": "Option contracts traded today.",
            "type": [
              "number",
              "null"
            ]
          },
          "otm_percent": {
            "description": "Percent out of the money (negative when in the money).",
            "type": [
              "number",
              "null"
            ]
          },
          "premium": {
            "description": "Premium traded today in US dollars.",
            "type": [
              "number",
              "null"
            ]
          },
          "put_call_open_interest_ratio": {
            "description": "Put over call open interest.",
            "type": [
              "number",
              "null"
            ]
          },
          "put_call_volume_ratio": {
            "description": "Put over call volume.",
            "type": [
              "number",
              "null"
            ]
          },
          "put_volume": {
            "description": "Put contracts.",
            "type": [
              "number",
              "null"
            ]
          },
          "put_wall_distance_percent": {
            "description": "Distance to the put wall, percent.",
            "type": [
              "number",
              "null"
            ]
          },
          "realized_volatility_20d": {
            "description": "20-day realized volatility.",
            "type": [
              "number",
              "null"
            ]
          },
          "regime": {
            "description": "Gamma regime: positive, negative or neutral.",
            "type": [
              "string",
              "null"
            ]
          },
          "repeated_hit_count": {
            "description": "Bursts of five or more same-side prints within 100 ms.",
            "type": [
              "number",
              "null"
            ]
          },
          "risk_reversal_25d_30d": {
            "description": "25-delta risk reversal at 30 days.",
            "type": [
              "number",
              "null"
            ]
          },
          "spread_percent": {
            "description": "Bid/ask spread in percent of the mid.",
            "type": [
              "number",
              "null"
            ]
          },
          "strike": {
            "description": "Strike in dollars.",
            "type": [
              "number",
              "null"
            ]
          },
          "sweep_count": {
            "description": "Inferred sweeps.",
            "type": [
              "number",
              "null"
            ]
          },
          "sweep_premium": {
            "description": "Sweep premium in US dollars.",
            "type": [
              "number",
              "null"
            ]
          },
          "term_slope_7_30": {
            "description": "7-day minus 30-day implied volatility.",
            "type": [
              "number",
              "null"
            ]
          },
          "theta": {
            "description": "Theta per day.",
            "type": [
              "number",
              "null"
            ]
          },
          "total_premium": {
            "description": "Premium traded in US dollars.",
            "type": [
              "number",
              "null"
            ]
          },
          "trades": {
            "description": "Prints today.",
            "type": [
              "number",
              "null"
            ]
          },
          "underlying_price": {
            "description": "Underlying price.",
            "type": [
              "number",
              "null"
            ]
          },
          "underlying_symbol": {
            "description": "Option root of the contract.",
            "type": [
              "string",
              "null"
            ]
          },
          "vega": {
            "description": "Vega per volatility point.",
            "type": [
              "number",
              "null"
            ]
          },
          "volatility_risk_premium": {
            "description": "30-day implied minus 20-day realized volatility.",
            "type": [
              "number",
              "null"
            ]
          },
          "volume": {
            "description": "Contracts traded today.",
            "type": [
              "number",
              "null"
            ]
          },
          "volume_to_open_interest": {
            "description": "Volume over open interest.",
            "type": [
              "number",
              "null"
            ]
          }
        },
        "type": "object"
      },
      "OptionsSessionsRow": {
        "additionalProperties": false,
        "description": "Session calendar of an underlying.",
        "properties": {
          "history": {
            "description": "Recorded sessions, newest first.",
            "items": {
              "additionalProperties": false,
              "description": "One recorded session.",
              "properties": {
                "available_on_request": {
                  "description": "The session can be served on demand even though it is not recorded yet.",
                  "type": "boolean"
                },
                "end_timestamp": {
                  "description": "End of the session. Unix epoch milliseconds (UTC).",
                  "format": "unix-ms",
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "gaps": {
                  "description": "Gaps in the recorded trades.",
                  "type": "integer"
                },
                "quote_history_state": {
                  "description": "State of the recorded quote history.",
                  "enum": [
                    "ready",
                    "recording",
                    "queued",
                    "running",
                    "failed",
                    "unavailable",
                    "not_requested"
                  ],
                  "type": "string"
                },
                "session": {
                  "description": "Session.",
                  "type": "string"
                },
                "start_timestamp": {
                  "description": "Start of the session. Unix epoch milliseconds (UTC).",
                  "format": "unix-ms",
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "trade_count": {
                  "description": "Trades recorded.",
                  "type": "integer"
                },
                "trade_history_state": {
                  "description": "State of the recorded trade history.",
                  "enum": [
                    "live",
                    "complete",
                    "partial",
                    "queued",
                    "running",
                    "unavailable",
                    "not_requested"
                  ],
                  "type": "string"
                },
                "trading_date": {
                  "description": "Trading date, YYYY-MM-DD.",
                  "type": "string"
                }
              },
              "required": [
                "trading_date",
                "session",
                "start_timestamp",
                "end_timestamp",
                "available_on_request",
                "quote_history_state",
                "trade_history_state",
                "trade_count",
                "gaps"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "holidays": {
            "description": "Exchange holidays and early closes.",
            "items": {
              "additionalProperties": false,
              "description": "One holiday.",
              "properties": {
                "date": {
                  "description": "Date, YYYY-MM-DD.",
                  "type": "string"
                },
                "type": {
                  "description": "Kind of close.",
                  "enum": [
                    "full_close",
                    "early_close"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "date",
                "type"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "last_completed": {
            "additionalProperties": false,
            "description": "The last completed session.",
            "properties": {
              "session": {
                "description": "Session.",
                "type": "string"
              },
              "trading_date": {
                "description": "Trading date of the last completed session.",
                "type": "string"
              }
            },
            "required": [
              "trading_date",
              "session"
            ],
            "type": "object"
          },
          "market_state": {
            "description": "State of the options market now.",
            "enum": [
              "open",
              "post_cash_close",
              "curb_open",
              "gth_open",
              "closed"
            ],
            "type": "string"
          },
          "sessions": {
            "description": "Sessions of the current trading date.",
            "items": {
              "additionalProperties": false,
              "description": "One session.",
              "properties": {
                "end_timestamp": {
                  "description": "End of the session. Unix epoch milliseconds (UTC).",
                  "format": "unix-ms",
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "session": {
                  "description": "Session.",
                  "enum": [
                    "gth",
                    "rth",
                    "curb"
                  ],
                  "type": "string"
                },
                "start_timestamp": {
                  "description": "Start of the session. Unix epoch milliseconds (UTC).",
                  "format": "unix-ms",
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "state": {
                  "description": "live: trading now; upcoming; completed; not_applicable: the underlying has no such session.",
                  "enum": [
                    "live",
                    "upcoming",
                    "completed",
                    "not_applicable"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "session",
                "state",
                "start_timestamp",
                "end_timestamp"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "trading_date": {
            "description": "Current trading date.",
            "format": "date",
            "type": "string"
          },
          "underlying_symbol": {
            "description": "Underlying the calendar belongs to.",
            "type": "string"
          }
        },
        "required": [
          "underlying_symbol",
          "market_state",
          "trading_date",
          "sessions",
          "last_completed",
          "history",
          "holidays"
        ],
        "type": "object"
      },
      "OptionsStrikesRow": {
        "additionalProperties": false,
        "description": "One listed strike.",
        "properties": {
          "date_of_expiry": {
            "description": "Expiration date.",
            "format": "date",
            "type": "string"
          },
          "strike": {
            "description": "Strike price in dollars.",
            "type": "number"
          },
          "underlying_symbol": {
            "description": "Option root that lists the strike.",
            "type": "string"
          }
        },
        "required": [
          "underlying_symbol",
          "date_of_expiry",
          "strike"
        ],
        "type": "object"
      },
      "OptionsTradesRow": {
        "additionalProperties": false,
        "description": "One classified option print.",
        "properties": {
          "ask": {
            "description": "Best ask at execution; null when no valid quote was available.",
            "type": [
              "number",
              "null"
            ]
          },
          "bid": {
            "description": "Best bid at execution; null when no valid quote was available.",
            "type": [
              "number",
              "null"
            ]
          },
          "condition_code": {
            "description": "Numeric trade condition code.",
            "type": "integer"
          },
          "contract_type": {
            "description": "Call or put.",
            "enum": [
              "call",
              "put"
            ],
            "type": "string"
          },
          "date_of_expiry": {
            "description": "Expiration date.",
            "format": "date",
            "type": "string"
          },
          "day_volume": {
            "description": "Contracts traded in this contract so far on the trading date, as counted by the platform.",
            "type": "integer"
          },
          "days_to_expiry": {
            "description": "Calendar days from the trading date to expiration.",
            "type": "integer"
          },
          "delta": {
            "description": "Delta at execution.",
            "type": [
              "number",
              "null"
            ]
          },
          "exchange": {
            "description": "Executing exchange, for example cboe, or unmapped_<code> for a venue without a name.",
            "type": "string"
          },
          "exchange_code": {
            "description": "Numeric exchange code of the options price reporting authority.",
            "type": "integer"
          },
          "flags": {
            "description": "Condition flags: iso (intermarket sweep), auction, cross, floor, complex (multi-leg order), tied, implied, ext_hours, late, cancelled, aggressor_hint, post_cash_close, vol_gt_oi (day volume above open interest), size_gt_oi (print size above open interest), no_side.",
            "items": {
              "description": "A condition flag.",
              "enum": [
                "iso",
                "auction",
                "cross",
                "floor",
                "complex",
                "tied",
                "implied",
                "ext_hours",
                "late",
                "cancelled",
                "aggressor_hint",
                "post_cash_close",
                "vol_gt_oi",
                "size_gt_oi",
                "no_side"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "group_id": {
            "description": "Identifier of the sweep or split this print belongs to; null for a single print.",
            "type": [
              "string",
              "null"
            ]
          },
          "id": {
            "description": "Identifier of the print: root:expiry:strike x 1000:right:date:sequence. Stable; treat it as opaque.",
            "type": "string"
          },
          "implied_volatility": {
            "description": "Implied volatility solved at execution.",
            "type": [
              "number",
              "null"
            ]
          },
          "is_block": {
            "description": "A block: at least 100 contracts and $50,000 premium, or $250,000 premium, or a large auction, cross or floor print.",
            "type": "boolean"
          },
          "is_golden": {
            "description": "A golden sweep: a sweep of at least $1,000,000 premium.",
            "type": "boolean"
          },
          "is_unusual": {
            "description": "Volume above open interest within 45 days, premium of at least $250,000, or an out-of-the-money sweep at the ask.",
            "type": "boolean"
          },
          "open_interest": {
            "description": "Open interest of the contract at the start of the trading date.",
            "type": [
              "integer",
              "null"
            ]
          },
          "otm_percent": {
            "description": "How far out of the money the strike is, in percent of the underlying price; negative when in the money.",
            "type": [
              "number",
              "null"
            ]
          },
          "premium": {
            "description": "Premium in US dollars: price x size x multiplier.",
            "type": "number"
          },
          "price": {
            "description": "Execution price per share.",
            "type": "number"
          },
          "sentiment": {
            "description": "Direction implied by the side: bullish (calls bought or puts sold), bearish (puts bought or calls sold), neutral (traded at the mid) or unknown.",
            "enum": [
              "bullish",
              "bearish",
              "neutral",
              "unknown"
            ],
            "type": "string"
          },
          "session": {
            "description": "Session of the print.",
            "enum": [
              "rth",
              "gth",
              "curb",
              "other"
            ],
            "type": "string"
          },
          "side": {
            "description": "Aggressor class of the print against the quote it was classified with: above_ask (through the ask), at_ask, near_ask (inside the spread, above the mid zone), mid, near_bid, at_bid, below_bid, or unknown when the quote was missing or invalid.",
            "enum": [
              "above_ask",
              "at_ask",
              "near_ask",
              "mid",
              "near_bid",
              "at_bid",
              "below_bid",
              "unknown"
            ],
            "type": "string"
          },
          "side_confidence": {
            "description": "Confidence of the side classification, 0 to 1; lower when the quote was stale or the order was a complex one.",
            "type": "number"
          },
          "size": {
            "description": "Contracts traded.",
            "type": "integer"
          },
          "strike": {
            "description": "Strike in dollars.",
            "type": "number"
          },
          "timestamp": {
            "description": "Execution time. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "trade_type": {
            "description": "Print or order type. Sweeps and splits are inferred groupings of prints, not exchange-confirmed.",
            "enum": [
              "sweep",
              "split",
              "single",
              "multileg",
              "cross",
              "floor"
            ],
            "type": "string"
          },
          "underlying_price": {
            "description": "Underlying price at execution; null when unknown.",
            "type": [
              "number",
              "null"
            ]
          },
          "underlying_symbol": {
            "description": "Option root of the contract, for example SPXW.",
            "type": "string"
          }
        },
        "required": [
          "ask",
          "bid",
          "condition_code",
          "contract_type",
          "date_of_expiry",
          "day_volume",
          "days_to_expiry",
          "delta",
          "exchange",
          "exchange_code",
          "flags",
          "group_id",
          "id",
          "implied_volatility",
          "is_block",
          "is_golden",
          "is_unusual",
          "open_interest",
          "otm_percent",
          "premium",
          "price",
          "sentiment",
          "session",
          "side",
          "side_confidence",
          "size",
          "strike",
          "timestamp",
          "trade_type",
          "underlying_price",
          "underlying_symbol"
        ],
        "type": "object"
      },
      "OptionsUnderlyingsRow": {
        "additionalProperties": false,
        "description": "One underlying.",
        "properties": {
          "underlying_symbol": {
            "description": "Symbol of the underlying or option root.",
            "type": "string"
          }
        },
        "required": [
          "underlying_symbol"
        ],
        "type": "object"
      },
      "OptionsVolatilityDriftRow": {
        "additionalProperties": false,
        "description": "Intraday volatility drift.",
        "properties": {
          "date_of_expiry": {
            "description": "The expiration tracked.",
            "format": "date",
            "type": "string"
          },
          "interval": {
            "description": "Bucket length.",
            "enum": [
              "1m",
              "5m"
            ],
            "type": "string"
          },
          "points": {
            "description": "Buckets with a value.",
            "items": {
              "additionalProperties": false,
              "description": "One bucket.",
              "properties": {
                "adjusted_realized_volatility": {
                  "description": "Adjusted realized volatility of the underlying.",
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "implied_volatility": {
                  "description": "At-the-money implied volatility on the calendar clock.",
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "implied_volatility_30d": {
                  "description": "30-day constant-maturity implied volatility.",
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "implied_volatility_trading_clock": {
                  "description": "The same on the trading-variance clock.",
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "timestamp": {
                  "description": "Time of the bucket. Unix epoch milliseconds (UTC).",
                  "format": "unix-ms",
                  "type": "integer"
                },
                "underlying_price": {
                  "description": "Underlying price.",
                  "type": [
                    "number",
                    "null"
                  ]
                }
              },
              "required": [
                "adjusted_realized_volatility",
                "implied_volatility",
                "implied_volatility_30d",
                "implied_volatility_trading_clock",
                "timestamp",
                "underlying_price"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "realized_volatility_basis": {
            "additionalProperties": false,
            "description": "How the adjusted realized volatility is built.",
            "properties": {
              "days": {
                "description": "Days of history used.",
                "type": "integer"
              },
              "default_used": {
                "description": "The default session share was used for lack of history.",
                "type": "boolean"
              },
              "regular_session_share": {
                "description": "Share of the day's variance attributed to the regular session.",
                "type": [
                  "number",
                  "null"
                ]
              }
            },
            "required": [
              "days",
              "default_used",
              "regular_session_share"
            ],
            "type": "object"
          },
          "session": {
            "description": "Session.",
            "enum": [
              "rth",
              "gth",
              "curb",
              "all"
            ],
            "type": "string"
          },
          "trading_date": {
            "description": "Trading date.",
            "format": "date",
            "type": "string"
          },
          "underlying_symbol": {
            "description": "The requested underlying.",
            "type": "string"
          }
        },
        "required": [
          "date_of_expiry",
          "interval",
          "points",
          "realized_volatility_basis",
          "session",
          "trading_date",
          "underlying_symbol"
        ],
        "type": "object"
      },
      "OptionsVolatilityExpectedMoveRow": {
        "additionalProperties": false,
        "description": "Expected move to one expiration.",
        "properties": {
          "atm_implied_volatility": {
            "description": "At-the-money implied volatility.",
            "type": [
              "number",
              "null"
            ]
          },
          "date_of_expiry": {
            "description": "Expiration.",
            "format": "date",
            "type": "string"
          },
          "days_to_expiry": {
            "description": "Days from the trading date.",
            "type": "integer"
          },
          "expected_move": {
            "description": "One standard deviation in points.",
            "type": [
              "number",
              "null"
            ]
          },
          "expected_move_percent": {
            "description": "The move in percent of the underlying price.",
            "type": [
              "number",
              "null"
            ]
          },
          "forward": {
            "description": "Forward price.",
            "type": [
              "number",
              "null"
            ]
          },
          "lower_bound": {
            "description": "Underlying price minus the expected move.",
            "type": [
              "number",
              "null"
            ]
          },
          "settlement": {
            "description": "am (settles on the opening prices) or pm (the close).",
            "enum": [
              "am",
              "pm"
            ],
            "type": "string"
          },
          "underlying_price": {
            "description": "Underlying price.",
            "type": [
              "number",
              "null"
            ]
          },
          "underlying_symbol": {
            "description": "Option root of the expiration.",
            "type": "string"
          },
          "upper_bound": {
            "description": "Underlying price plus the expected move.",
            "type": [
              "number",
              "null"
            ]
          }
        },
        "required": [
          "atm_implied_volatility",
          "date_of_expiry",
          "days_to_expiry",
          "expected_move",
          "expected_move_percent",
          "forward",
          "lower_bound",
          "settlement",
          "underlying_price",
          "underlying_symbol",
          "upper_bound"
        ],
        "type": "object"
      },
      "OptionsVolatilityHistoryRow": {
        "additionalProperties": false,
        "description": "Constant-maturity implied volatility on one date.",
        "properties": {
          "date": {
            "description": "Trading date.",
            "format": "date",
            "type": "string"
          },
          "implied_volatility": {
            "description": "Implied volatility as a decimal.",
            "type": "number"
          },
          "underlying_price": {
            "description": "Underlying close.",
            "type": [
              "number",
              "null"
            ]
          }
        },
        "required": [
          "date",
          "implied_volatility",
          "underlying_price"
        ],
        "type": "object"
      },
      "OptionsVolatilityRankRow": {
        "additionalProperties": false,
        "description": "Implied volatility rank.",
        "properties": {
          "current": {
            "additionalProperties": false,
            "description": "The latest value.",
            "properties": {
              "coverage_ratio": {
                "description": "Share of the window's days with data, 0 to 1.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "date": {
                "description": "Date of the latest value.",
                "type": "string"
              },
              "implied_volatility": {
                "description": "Implied volatility as a decimal.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "percentile": {
                "description": "Percentile, 0 to 1.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "rank": {
                "description": "Rank, 0 to 1.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "window_maximum": {
                "description": "Highest volatility in the window.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "window_minimum": {
                "description": "Lowest volatility in the window.",
                "type": [
                  "number",
                  "null"
                ]
              }
            },
            "required": [
              "coverage_ratio",
              "date",
              "implied_volatility",
              "percentile",
              "rank",
              "window_maximum",
              "window_minimum"
            ],
            "type": "object"
          },
          "history": {
            "description": "Daily series, oldest first.",
            "items": {
              "additionalProperties": false,
              "description": "One day.",
              "properties": {
                "date": {
                  "description": "Date.",
                  "format": "date",
                  "type": "string"
                },
                "implied_volatility": {
                  "description": "Implied volatility.",
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "percentile": {
                  "description": "Percentile on that date.",
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "rank": {
                  "description": "Rank on that date.",
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "underlying_price": {
                  "description": "Underlying close.",
                  "type": [
                    "number",
                    "null"
                  ]
                }
              },
              "required": [
                "date",
                "implied_volatility",
                "percentile",
                "rank",
                "underlying_price"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "history_status": {
            "additionalProperties": false,
            "description": "State of the stored history.",
            "properties": {
              "from": {
                "description": "First date being loaded.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "progress": {
                "description": "Progress while loading, 0 to 1.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "state": {
                "description": "ready; queued or running while missing days load; failed; or unavailable when missing days are not stored and not being loaded.",
                "enum": [
                  "ready",
                  "queued",
                  "running",
                  "failed",
                  "unavailable"
                ],
                "type": "string"
              },
              "to": {
                "description": "Last date being loaded.",
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "required": [
              "from",
              "progress",
              "state",
              "to"
            ],
            "type": "object"
          },
          "lookback_days": {
            "description": "Rank window.",
            "type": "integer"
          },
          "maturity_days": {
            "description": "Constant maturity.",
            "type": "integer"
          },
          "underlying_symbol": {
            "description": "The requested underlying.",
            "type": "string"
          }
        },
        "required": [
          "current",
          "history",
          "history_status",
          "lookback_days",
          "maturity_days",
          "underlying_symbol"
        ],
        "type": "object"
      },
      "OptionsVolatilitySkewRow": {
        "additionalProperties": false,
        "description": "Volatility skew.",
        "properties": {
          "expirations": {
            "description": "The expirations shown, soonest first.",
            "items": {
              "additionalProperties": false,
              "description": "One expiration.",
              "properties": {
                "atm_implied_volatility": {
                  "description": "At-the-money implied volatility.",
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "butterfly_10d": {
                  "description": "10-delta butterfly.",
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "butterfly_25d": {
                  "description": "Average of the 25-delta call and put volatility minus the at-the-money volatility.",
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "date_of_expiry": {
                  "description": "Expiration.",
                  "format": "date",
                  "type": "string"
                },
                "days_to_expiry": {
                  "description": "Days from the trading date.",
                  "type": "integer"
                },
                "forward": {
                  "description": "Forward price implied by the chain.",
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "normalized_skew": {
                  "description": "Risk reversal over the at-the-money volatility.",
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "points": {
                  "description": "Strikes, ascending.",
                  "items": {
                    "additionalProperties": false,
                    "description": "One strike.",
                    "properties": {
                      "call_delta": {
                        "description": "Call delta.",
                        "type": [
                          "number",
                          "null"
                        ]
                      },
                      "call_implied_volatility": {
                        "description": "Call implied volatility.",
                        "type": [
                          "number",
                          "null"
                        ]
                      },
                      "moneyness": {
                        "description": "Log-moneyness: ln(strike / forward); null when the forward is unknown.",
                        "type": [
                          "number",
                          "null"
                        ]
                      },
                      "otm_implied_volatility": {
                        "description": "Implied volatility of the out-of-the-money option at the strike.",
                        "type": [
                          "number",
                          "null"
                        ]
                      },
                      "put_delta": {
                        "description": "Put delta.",
                        "type": [
                          "number",
                          "null"
                        ]
                      },
                      "put_implied_volatility": {
                        "description": "Put implied volatility.",
                        "type": [
                          "number",
                          "null"
                        ]
                      },
                      "strike": {
                        "description": "Strike.",
                        "type": "number"
                      }
                    },
                    "required": [
                      "call_delta",
                      "call_implied_volatility",
                      "moneyness",
                      "otm_implied_volatility",
                      "put_delta",
                      "put_implied_volatility",
                      "strike"
                    ],
                    "type": "object"
                  },
                  "type": "array"
                },
                "risk_reversal_10d": {
                  "description": "10-delta risk reversal.",
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "risk_reversal_25d": {
                  "description": "25-delta call volatility minus put volatility.",
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "slope": {
                  "description": "Slope of volatility against moneyness.",
                  "type": [
                    "number",
                    "null"
                  ]
                }
              },
              "required": [
                "atm_implied_volatility",
                "butterfly_10d",
                "butterfly_25d",
                "date_of_expiry",
                "days_to_expiry",
                "forward",
                "normalized_skew",
                "points",
                "risk_reversal_10d",
                "risk_reversal_25d",
                "slope"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "roots": {
            "description": "Option roots included.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "session": {
            "description": "Session valued.",
            "enum": [
              "rth",
              "gth",
              "curb",
              "all"
            ],
            "type": "string"
          },
          "trading_date": {
            "description": "Trading date valued.",
            "format": "date",
            "type": "string"
          },
          "underlying_symbol": {
            "description": "The requested underlying.",
            "type": "string"
          },
          "valuation": {
            "additionalProperties": false,
            "description": "What the snapshot was valued on.",
            "properties": {
              "chain_timestamp": {
                "description": "Time of the option chain the valuation used. Unix epoch milliseconds (UTC).",
                "format": "unix-ms",
                "type": [
                  "integer",
                  "null"
                ]
              },
              "open_interest_date": {
                "description": "Date of the open interest the positioning is based on.",
                "format": "date",
                "type": [
                  "string",
                  "null"
                ]
              },
              "risk_free_rate": {
                "description": "Continuously compounded risk-free rate used.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "timestamp": {
                "description": "Valuation time. Unix epoch milliseconds (UTC).",
                "format": "unix-ms",
                "type": [
                  "integer",
                  "null"
                ]
              },
              "underlying_price": {
                "description": "Underlying price used.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "underlying_stale": {
                "description": "The underlying price is older than the freshness limit.",
                "type": "boolean"
              },
              "underlying_timestamp": {
                "description": "Time of the underlying price. Unix epoch milliseconds (UTC).",
                "format": "unix-ms",
                "type": [
                  "integer",
                  "null"
                ]
              }
            },
            "required": [
              "chain_timestamp",
              "open_interest_date",
              "risk_free_rate",
              "timestamp",
              "underlying_price",
              "underlying_stale",
              "underlying_timestamp"
            ],
            "type": "object"
          }
        },
        "required": [
          "expirations",
          "roots",
          "session",
          "trading_date",
          "underlying_symbol",
          "valuation"
        ],
        "type": "object"
      },
      "OptionsVolatilitySurfaceRow": {
        "additionalProperties": false,
        "description": "Implied volatility surface.",
        "properties": {
          "basis": {
            "description": "out_of_the_money: each strike shows its out-of-the-money option; call or put: that leg only.",
            "enum": [
              "out_of_the_money",
              "call",
              "put"
            ],
            "type": "string"
          },
          "cells": {
            "description": "Cells with a listed contract.",
            "items": {
              "additionalProperties": false,
              "description": "One cell.",
              "properties": {
                "contract_type": {
                  "description": "Call or put.",
                  "enum": [
                    "call",
                    "put"
                  ],
                  "type": "string"
                },
                "date_of_expiry": {
                  "description": "Expiration.",
                  "format": "date",
                  "type": "string"
                },
                "days_to_expiry": {
                  "description": "Days from the trading date.",
                  "type": "integer"
                },
                "implied_volatility": {
                  "description": "Implied volatility as a decimal.",
                  "type": "number"
                },
                "strike": {
                  "description": "Strike.",
                  "type": "number"
                }
              },
              "required": [
                "contract_type",
                "date_of_expiry",
                "days_to_expiry",
                "implied_volatility",
                "strike"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "roots": {
            "description": "Option roots included.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "session": {
            "description": "Session valued.",
            "enum": [
              "rth",
              "gth",
              "curb",
              "all"
            ],
            "type": "string"
          },
          "trading_date": {
            "description": "Trading date valued.",
            "format": "date",
            "type": "string"
          },
          "underlying_symbol": {
            "description": "The requested underlying.",
            "type": "string"
          },
          "valuation": {
            "additionalProperties": false,
            "description": "What the snapshot was valued on.",
            "properties": {
              "chain_timestamp": {
                "description": "Time of the option chain the valuation used. Unix epoch milliseconds (UTC).",
                "format": "unix-ms",
                "type": [
                  "integer",
                  "null"
                ]
              },
              "open_interest_date": {
                "description": "Date of the open interest the positioning is based on.",
                "format": "date",
                "type": [
                  "string",
                  "null"
                ]
              },
              "risk_free_rate": {
                "description": "Continuously compounded risk-free rate used.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "timestamp": {
                "description": "Valuation time. Unix epoch milliseconds (UTC).",
                "format": "unix-ms",
                "type": [
                  "integer",
                  "null"
                ]
              },
              "underlying_price": {
                "description": "Underlying price used.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "underlying_stale": {
                "description": "The underlying price is older than the freshness limit.",
                "type": "boolean"
              },
              "underlying_timestamp": {
                "description": "Time of the underlying price. Unix epoch milliseconds (UTC).",
                "format": "unix-ms",
                "type": [
                  "integer",
                  "null"
                ]
              }
            },
            "required": [
              "chain_timestamp",
              "open_interest_date",
              "risk_free_rate",
              "timestamp",
              "underlying_price",
              "underlying_stale",
              "underlying_timestamp"
            ],
            "type": "object"
          }
        },
        "required": [
          "basis",
          "cells",
          "roots",
          "session",
          "trading_date",
          "underlying_symbol",
          "valuation"
        ],
        "type": "object"
      },
      "OptionsVolatilitySurfaceSliceRow": {
        "additionalProperties": false,
        "description": "Implied volatility surface.",
        "properties": {
          "basis": {
            "description": "out_of_the_money: each strike shows its out-of-the-money option; call or put: that leg only.",
            "enum": [
              "out_of_the_money",
              "call",
              "put"
            ],
            "type": "string"
          },
          "cells": {
            "description": "Cells with a listed contract.",
            "items": {
              "additionalProperties": false,
              "description": "One cell.",
              "properties": {
                "contract_type": {
                  "description": "Call or put.",
                  "enum": [
                    "call",
                    "put"
                  ],
                  "type": "string"
                },
                "date_of_expiry": {
                  "description": "Expiration.",
                  "format": "date",
                  "type": "string"
                },
                "days_to_expiry": {
                  "description": "Days from the trading date.",
                  "type": "integer"
                },
                "implied_volatility": {
                  "description": "Implied volatility as a decimal.",
                  "type": "number"
                },
                "strike": {
                  "description": "Strike.",
                  "type": "number"
                }
              },
              "required": [
                "contract_type",
                "date_of_expiry",
                "days_to_expiry",
                "implied_volatility",
                "strike"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "roots": {
            "description": "Option roots included.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "session": {
            "description": "Session valued.",
            "enum": [
              "rth",
              "gth",
              "curb",
              "all"
            ],
            "type": "string"
          },
          "trading_date": {
            "description": "Trading date valued.",
            "format": "date",
            "type": "string"
          },
          "underlying_symbol": {
            "description": "The requested underlying.",
            "type": "string"
          },
          "valuation": {
            "additionalProperties": false,
            "description": "What the snapshot was valued on.",
            "properties": {
              "chain_timestamp": {
                "description": "Time of the option chain the valuation used. Unix epoch milliseconds (UTC).",
                "format": "unix-ms",
                "type": [
                  "integer",
                  "null"
                ]
              },
              "open_interest_date": {
                "description": "Date of the open interest the positioning is based on.",
                "format": "date",
                "type": [
                  "string",
                  "null"
                ]
              },
              "risk_free_rate": {
                "description": "Continuously compounded risk-free rate used.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "timestamp": {
                "description": "Valuation time. Unix epoch milliseconds (UTC).",
                "format": "unix-ms",
                "type": [
                  "integer",
                  "null"
                ]
              },
              "underlying_price": {
                "description": "Underlying price used.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "underlying_stale": {
                "description": "The underlying price is older than the freshness limit.",
                "type": "boolean"
              },
              "underlying_timestamp": {
                "description": "Time of the underlying price. Unix epoch milliseconds (UTC).",
                "format": "unix-ms",
                "type": [
                  "integer",
                  "null"
                ]
              }
            },
            "required": [
              "chain_timestamp",
              "open_interest_date",
              "risk_free_rate",
              "timestamp",
              "underlying_price",
              "underlying_stale",
              "underlying_timestamp"
            ],
            "type": "object"
          }
        },
        "required": [
          "basis",
          "cells",
          "roots",
          "session",
          "trading_date",
          "underlying_symbol",
          "valuation"
        ],
        "type": "object"
      },
      "OptionsVolatilityTermStructureRow": {
        "additionalProperties": false,
        "description": "Implied volatility term structure.",
        "properties": {
          "constant_maturity": {
            "description": "Volatility interpolated to fixed maturities.",
            "items": {
              "additionalProperties": false,
              "description": "One maturity.",
              "properties": {
                "days": {
                  "description": "Maturity in days.",
                  "type": "integer"
                },
                "implied_volatility": {
                  "description": "Interpolated volatility; null beyond the listed expirations.",
                  "type": [
                    "number",
                    "null"
                  ]
                }
              },
              "required": [
                "days",
                "implied_volatility"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "expirations": {
            "description": "Listed expirations, soonest first.",
            "items": {
              "additionalProperties": false,
              "description": "One expiration.",
              "properties": {
                "date_of_expiry": {
                  "description": "Expiration.",
                  "format": "date",
                  "type": "string"
                },
                "days_to_expiry": {
                  "description": "Days from the trading date.",
                  "type": "integer"
                },
                "expected_move": {
                  "description": "One-standard-deviation expected move: price x volatility x square root of time.",
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "forward": {
                  "description": "Forward price.",
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "forward_volatility": {
                  "description": "Volatility implied between the previous expiration and this one; null for the first, for intervals under a day and for inverted variance.",
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "implied_volatility": {
                  "description": "Implied volatility.",
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "on_curve": {
                  "description": "The expiration is on the term curve (false for the AM root when a PM root expires the same day).",
                  "type": "boolean"
                },
                "underlying_symbol": {
                  "description": "Option root of the expiration.",
                  "type": "string"
                }
              },
              "required": [
                "date_of_expiry",
                "days_to_expiry",
                "expected_move",
                "forward",
                "forward_volatility",
                "implied_volatility",
                "on_curve",
                "underlying_symbol"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "measure": {
            "description": "atm or delta_band.",
            "enum": [
              "atm",
              "delta_band"
            ],
            "type": "string"
          },
          "roots": {
            "description": "Option roots included.",
            "items": {
              "type": "string"
            },
            "type": "array"
          },
          "session": {
            "description": "Session valued.",
            "enum": [
              "rth",
              "gth",
              "curb",
              "all"
            ],
            "type": "string"
          },
          "slope": {
            "additionalProperties": false,
            "description": "Term slopes.",
            "properties": {
              "iv30_minus_iv7": {
                "description": "30-day minus 7-day volatility.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "iv60_over_iv30": {
                "description": "60-day over 30-day volatility.",
                "type": [
                  "number",
                  "null"
                ]
              }
            },
            "required": [
              "iv30_minus_iv7",
              "iv60_over_iv30"
            ],
            "type": "object"
          },
          "trading_date": {
            "description": "Trading date valued.",
            "format": "date",
            "type": "string"
          },
          "underlying_symbol": {
            "description": "The requested underlying.",
            "type": "string"
          },
          "valuation": {
            "additionalProperties": false,
            "description": "What the snapshot was valued on.",
            "properties": {
              "chain_timestamp": {
                "description": "Time of the option chain the valuation used. Unix epoch milliseconds (UTC).",
                "format": "unix-ms",
                "type": [
                  "integer",
                  "null"
                ]
              },
              "open_interest_date": {
                "description": "Date of the open interest the positioning is based on.",
                "format": "date",
                "type": [
                  "string",
                  "null"
                ]
              },
              "risk_free_rate": {
                "description": "Continuously compounded risk-free rate used.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "timestamp": {
                "description": "Valuation time. Unix epoch milliseconds (UTC).",
                "format": "unix-ms",
                "type": [
                  "integer",
                  "null"
                ]
              },
              "underlying_price": {
                "description": "Underlying price used.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "underlying_stale": {
                "description": "The underlying price is older than the freshness limit.",
                "type": "boolean"
              },
              "underlying_timestamp": {
                "description": "Time of the underlying price. Unix epoch milliseconds (UTC).",
                "format": "unix-ms",
                "type": [
                  "integer",
                  "null"
                ]
              }
            },
            "required": [
              "chain_timestamp",
              "open_interest_date",
              "risk_free_rate",
              "timestamp",
              "underlying_price",
              "underlying_stale",
              "underlying_timestamp"
            ],
            "type": "object"
          }
        },
        "required": [
          "constant_maturity",
          "expirations",
          "measure",
          "roots",
          "session",
          "slope",
          "trading_date",
          "underlying_symbol",
          "valuation"
        ],
        "type": "object"
      },
      "Pagination": {
        "properties": {
          "count": {
            "type": "integer"
          },
          "has_more": {
            "type": "boolean"
          },
          "limit": {
            "type": "integer"
          },
          "next_cursor_id": {
            "description": "Pass as cursor_id to fetch the next page; null on the last page.",
            "type": [
              "string",
              "null"
            ]
          },
          "next_url": {
            "description": "Relative URL of the next page; null on the last page.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "limit",
          "count",
          "has_more",
          "next_cursor_id",
          "next_url"
        ],
        "type": "object"
      },
      "PlatformCatalogRow": {
        "additionalProperties": false,
        "description": "One catalog entry.",
        "properties": {
          "dataset": {
            "description": "Dataset release needed.",
            "enum": [
              "options",
              "futures",
              "equities",
              "indices",
              "none"
            ],
            "type": "string"
          },
          "description": {
            "description": "Details.",
            "type": "string"
          },
          "family": {
            "description": "Route family.",
            "type": "string"
          },
          "history_params": {
            "description": "Parameters bounded by the plan history window.",
            "items": {
              "description": "Parameter name.",
              "type": "string"
            },
            "type": "array"
          },
          "id": {
            "description": "Stable identifier.",
            "type": "string"
          },
          "mcp": {
            "description": "Exposed as an MCP tool.",
            "type": "boolean"
          },
          "method": {
            "description": "HTTP method.",
            "enum": [
              "GET"
            ],
            "type": "string"
          },
          "overnight": {
            "description": "Accepts the overnight session.",
            "type": "boolean"
          },
          "paginated": {
            "description": "Supports limit and cursor_id.",
            "type": "boolean"
          },
          "params": {
            "description": "Query parameters.",
            "items": {
              "additionalProperties": false,
              "properties": {
                "default": {
                  "description": "Default when absent."
                },
                "description": {
                  "description": "What the parameter does.",
                  "type": "string"
                },
                "enum": {
                  "description": "Allowed values.",
                  "items": {
                    "description": "Value.",
                    "type": "string"
                  },
                  "type": "array"
                },
                "item": {
                  "description": "List item type.",
                  "type": "string"
                },
                "max": {
                  "description": "Maximum.",
                  "type": "number"
                },
                "max_items": {
                  "description": "List bound.",
                  "type": "integer"
                },
                "min": {
                  "description": "Minimum.",
                  "type": "number"
                },
                "name": {
                  "description": "Parameter.",
                  "type": "string"
                },
                "required": {
                  "description": "Must be supplied.",
                  "type": "boolean"
                },
                "type": {
                  "description": "string, int, number, decimal, bool, ms, date, enum or list.",
                  "type": "string"
                }
              },
              "required": [
                "name",
                "type",
                "required",
                "description"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "path": {
            "description": "Route path.",
            "type": "string"
          },
          "public": {
            "description": "Needs no key.",
            "type": "boolean"
          },
          "streamable": {
            "description": "Available as a streaming snapshot.",
            "type": "boolean"
          },
          "summary": {
            "description": "One-line summary.",
            "type": "string"
          }
        },
        "required": [
          "id",
          "method",
          "path",
          "family",
          "summary",
          "dataset",
          "paginated",
          "streamable",
          "mcp",
          "overnight",
          "public",
          "params"
        ],
        "type": "object"
      },
      "PlatformOpenapiRow": {
        "additionalProperties": true,
        "description": "OpenAPI 3.1 document.",
        "type": "object"
      },
      "PlatformStatusRow": {
        "additionalProperties": false,
        "description": "Service health.",
        "properties": {
          "components": {
            "description": "Data components.",
            "items": {
              "additionalProperties": false,
              "properties": {
                "name": {
                  "description": "Component.",
                  "enum": [
                    "options",
                    "futures",
                    "stocks",
                    "indices"
                  ],
                  "type": "string"
                },
                "status": {
                  "description": "Component status.",
                  "enum": [
                    "operational",
                    "degraded",
                    "outage"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "name",
                "status"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "server_time": {
            "description": "Server time. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "status": {
            "description": "Worst component status.",
            "enum": [
              "operational",
              "degraded",
              "outage"
            ],
            "type": "string"
          }
        },
        "required": [
          "status",
          "components",
          "server_time"
        ],
        "type": "object"
      },
      "StocksBarsGroupedRow": {
        "additionalProperties": false,
        "description": "One stock's daily bar.",
        "properties": {
          "close": {
            "description": "Close.",
            "type": "number"
          },
          "high": {
            "description": "High.",
            "type": "number"
          },
          "low": {
            "description": "Low.",
            "type": "number"
          },
          "open": {
            "description": "Open.",
            "type": "number"
          },
          "symbol": {
            "description": "Ticker symbol.",
            "type": "string"
          },
          "trades": {
            "description": "Number of trades.",
            "type": [
              "integer",
              "null"
            ]
          },
          "volume": {
            "description": "Volume in shares.",
            "type": "number"
          },
          "vwap": {
            "description": "Volume weighted average price.",
            "type": [
              "number",
              "null"
            ]
          }
        },
        "required": [
          "symbol",
          "open",
          "high",
          "low",
          "close",
          "volume",
          "vwap",
          "trades"
        ],
        "type": "object"
      },
      "StocksBarsRow": {
        "additionalProperties": false,
        "description": "One bar.",
        "properties": {
          "close": {
            "description": "Close.",
            "type": "number"
          },
          "high": {
            "description": "High.",
            "type": "number"
          },
          "low": {
            "description": "Low.",
            "type": "number"
          },
          "open": {
            "description": "Open.",
            "type": "number"
          },
          "start_time": {
            "description": "Start of the bar's window. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "trades": {
            "description": "Number of trades.",
            "type": [
              "integer",
              "null"
            ]
          },
          "volume": {
            "description": "Volume in shares.",
            "type": "number"
          },
          "vwap": {
            "description": "Volume weighted average price.",
            "type": [
              "number",
              "null"
            ]
          }
        },
        "required": [
          "start_time",
          "open",
          "high",
          "low",
          "close",
          "volume",
          "vwap",
          "trades"
        ],
        "type": "object"
      },
      "StocksConditionsRow": {
        "additionalProperties": false,
        "description": "One condition code.",
        "properties": {
          "abbreviation": {
            "description": "Common abbreviation.",
            "type": [
              "string",
              "null"
            ]
          },
          "consolidated_rules": {
            "additionalProperties": false,
            "description": "Which consolidated aggregates a trade with this condition updates.",
            "properties": {
              "updates_high_low": {
                "description": "Updates the consolidated high and low.",
                "type": "boolean"
              },
              "updates_open_close": {
                "description": "Updates the consolidated open and close.",
                "type": "boolean"
              },
              "updates_volume": {
                "description": "Counts toward consolidated volume.",
                "type": "boolean"
              }
            },
            "required": [
              "updates_high_low",
              "updates_open_close",
              "updates_volume"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "data_types": {
            "description": "Data types the code applies to.",
            "items": {
              "description": "Data type.",
              "enum": [
                "trade",
                "bbo",
                "nbbo"
              ],
              "type": "string"
            },
            "type": "array"
          },
          "description": {
            "description": "What the condition means.",
            "type": [
              "string",
              "null"
            ]
          },
          "exchange": {
            "description": "When set, only this exchange id sends the code.",
            "type": [
              "integer",
              "null"
            ]
          },
          "id": {
            "description": "Condition code as it appears in conditions arrays.",
            "type": "integer"
          },
          "legacy": {
            "description": "The code belongs to an outdated specification and is no longer sent.",
            "type": "boolean"
          },
          "name": {
            "description": "Condition name.",
            "type": "string"
          },
          "type": {
            "description": "Kind of condition, for example sale_condition, quote_condition, sip_generated_flag.",
            "type": "string"
          }
        },
        "required": [
          "id",
          "name",
          "type",
          "abbreviation",
          "description",
          "data_types",
          "legacy",
          "exchange",
          "consolidated_rules"
        ],
        "type": "object"
      },
      "StocksDarkPoolFlowRow": {
        "additionalProperties": false,
        "description": "One interval of off-exchange activity.",
        "properties": {
          "notional": {
            "description": "Dollar value printed off-exchange in the interval.",
            "type": "number"
          },
          "price": {
            "description": "Price of the last off-exchange print in the interval; null when there was none.",
            "type": [
              "number",
              "null"
            ]
          },
          "size": {
            "description": "Shares printed off-exchange.",
            "type": "number"
          },
          "start_time": {
            "description": "Start of the interval. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "trades": {
            "description": "Off-exchange prints.",
            "type": "integer"
          }
        },
        "required": [
          "start_time",
          "notional",
          "size",
          "trades",
          "price"
        ],
        "type": "object"
      },
      "StocksDarkPoolLevelsRow": {
        "additionalProperties": false,
        "description": "Off-exchange price levels.",
        "properties": {
          "complete_sessions": {
            "description": "Dates captured from the open.",
            "items": {
              "description": "Exchange date.",
              "format": "date",
              "type": "string"
            },
            "type": "array"
          },
          "latest_price": {
            "description": "Latest price of the stock.",
            "type": [
              "number",
              "null"
            ]
          },
          "levels": {
            "description": "Price levels, highest notional first.",
            "items": {
              "additionalProperties": false,
              "description": "One price level.",
              "properties": {
                "last_timestamp": {
                  "description": "Time of the latest print at the level. Unix epoch milliseconds (UTC).",
                  "format": "unix-ms",
                  "type": "integer"
                },
                "notional": {
                  "description": "Dollar value printed at the level.",
                  "type": "number"
                },
                "price": {
                  "description": "Price level in dollars, to the cent.",
                  "type": "number"
                },
                "size": {
                  "description": "Shares printed at the level.",
                  "type": "number"
                },
                "trades": {
                  "description": "Prints at the level.",
                  "type": "integer"
                }
              },
              "required": [
                "price",
                "notional",
                "size",
                "trades",
                "last_timestamp"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "partial_sessions": {
            "description": "Dates captured only from part of the day.",
            "items": {
              "description": "Exchange date.",
              "format": "date",
              "type": "string"
            },
            "type": "array"
          },
          "sessions": {
            "description": "Exchange dates the levels aggregate.",
            "items": {
              "description": "Exchange date.",
              "format": "date",
              "type": "string"
            },
            "type": "array"
          },
          "symbol": {
            "description": "Ticker symbol.",
            "type": "string"
          }
        },
        "required": [
          "symbol",
          "sessions",
          "latest_price",
          "complete_sessions",
          "partial_sessions",
          "levels"
        ],
        "type": "object"
      },
      "StocksDarkPoolSummaryRow": {
        "additionalProperties": false,
        "description": "Off-exchange activity of one symbol and date.",
        "properties": {
          "covered_through": {
            "description": "Time up to which the tape was read. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": [
              "integer",
              "null"
            ]
          },
          "date": {
            "description": "Exchange date.",
            "format": "date",
            "type": "string"
          },
          "facilities": {
            "description": "Off-exchange activity by trade reporting facility.",
            "items": {
              "additionalProperties": false,
              "description": "One facility.",
              "properties": {
                "average_trade_notional": {
                  "description": "Average dollar value per trade.",
                  "type": "number"
                },
                "facility": {
                  "description": "Facility name.",
                  "type": "string"
                },
                "notional": {
                  "description": "Dollar value.",
                  "type": "number"
                },
                "share_of_off_exchange_notional": {
                  "description": "Fraction of the off-exchange dollar value (0 to 1).",
                  "type": "number"
                },
                "trades": {
                  "description": "Trades.",
                  "type": "integer"
                },
                "trf_id": {
                  "description": "Facility id; null when the print carried none.",
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "volume": {
                  "description": "Shares.",
                  "type": "number"
                }
              },
              "required": [
                "trf_id",
                "facility",
                "trades",
                "volume",
                "notional",
                "share_of_off_exchange_notional",
                "average_trade_notional"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "off_exchange_notional": {
            "description": "Off-exchange dollar value.",
            "type": "number"
          },
          "off_exchange_share_notional": {
            "description": "Off-exchange dollars as a fraction of all dollars (0 to 1).",
            "type": [
              "number",
              "null"
            ]
          },
          "off_exchange_share_trades": {
            "description": "Off-exchange trades as a fraction of all trades (0 to 1).",
            "type": [
              "number",
              "null"
            ]
          },
          "off_exchange_share_volume": {
            "description": "Off-exchange shares as a fraction of all shares (0 to 1).",
            "type": [
              "number",
              "null"
            ]
          },
          "off_exchange_trades": {
            "description": "Off-exchange trades.",
            "type": "integer"
          },
          "off_exchange_volume": {
            "description": "Off-exchange shares.",
            "type": "number"
          },
          "scan_complete": {
            "description": "The scan covered the whole date; false means the totals cover only the time up to covered_through.",
            "type": "boolean"
          },
          "scanned_trades": {
            "description": "Trades read by the scan (corrections are read but not counted).",
            "type": "integer"
          },
          "symbol": {
            "description": "Ticker symbol.",
            "type": "string"
          },
          "total_notional": {
            "description": "Dollar value traded across all venues.",
            "type": "number"
          },
          "total_trades": {
            "description": "Trades scanned across all venues.",
            "type": "integer"
          },
          "total_volume": {
            "description": "Shares traded across all venues.",
            "type": "number"
          }
        },
        "required": [
          "symbol",
          "date",
          "total_trades",
          "total_volume",
          "total_notional",
          "off_exchange_trades",
          "off_exchange_volume",
          "off_exchange_notional",
          "off_exchange_share_trades",
          "off_exchange_share_volume",
          "off_exchange_share_notional",
          "facilities",
          "scanned_trades",
          "scan_complete",
          "covered_through"
        ],
        "type": "object"
      },
      "StocksDarkPoolTradesRow": {
        "additionalProperties": false,
        "description": "One consolidated trade.",
        "properties": {
          "conditions": {
            "description": "Trade condition codes; see /v1/stocks/conditions.",
            "items": {
              "description": "Condition code.",
              "type": "integer"
            },
            "type": "array"
          },
          "correction": {
            "description": "Correction indicator (1, 8, 10 or 12) when the print was corrected or cancelled; null for a regular trade.",
            "type": [
              "integer",
              "null"
            ]
          },
          "exchange": {
            "description": "Numeric id of the reporting venue; see /v1/stocks/exchanges. 4 is a trade reporting facility (off-exchange).",
            "type": "integer"
          },
          "notional": {
            "description": "Price times size, in dollars.",
            "type": "number"
          },
          "off_exchange": {
            "description": "The trade was reported through a FINRA trade reporting facility (exchange id 4), the way dark pool and internalized trades are.",
            "type": "boolean"
          },
          "participant_timestamp": {
            "description": "Time the exchange or facility stamped the trade. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": [
              "integer",
              "null"
            ]
          },
          "price": {
            "description": "Trade price.",
            "type": "number"
          },
          "sequence_number": {
            "description": "Consolidated sequence number; increases within a trading day and breaks ties between trades in the same millisecond.",
            "type": "integer"
          },
          "size": {
            "description": "Trade size in shares, fractional shares included.",
            "type": "number"
          },
          "symbol": {
            "description": "Ticker symbol.",
            "type": "string"
          },
          "tape": {
            "description": "Consolidated tape: 1 NYSE listed, 2 NYSE American and Arca listed, 3 Nasdaq listed.",
            "type": [
              "integer",
              "null"
            ]
          },
          "timestamp": {
            "description": "Time the consolidated feed stamped the trade. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "timestamp_ns": {
            "description": "The same time in nanoseconds, as a string because it exceeds 2^53; orders trades exactly.",
            "type": "string"
          },
          "trade_id": {
            "description": "Trade id, unique per symbol, exchange and facility.",
            "type": "string"
          },
          "trf_id": {
            "description": "Trade reporting facility that received an off-exchange report: 201 FINRA/NYSE TRF, 202 FINRA/Nasdaq TRF Carteret, 203 FINRA/Nasdaq TRF Chicago.",
            "type": [
              "integer",
              "null"
            ]
          },
          "trf_timestamp": {
            "description": "Time the facility received the report. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": [
              "integer",
              "null"
            ]
          }
        },
        "required": [
          "symbol",
          "price",
          "size",
          "notional",
          "exchange",
          "off_exchange",
          "tape",
          "conditions",
          "correction",
          "trade_id",
          "sequence_number",
          "timestamp",
          "timestamp_ns",
          "participant_timestamp",
          "trf_id",
          "trf_timestamp"
        ],
        "type": "object"
      },
      "StocksDividendsRow": {
        "additionalProperties": false,
        "description": "One dividend.",
        "properties": {
          "cash_amount": {
            "description": "Cash per share.",
            "type": "number"
          },
          "currency": {
            "description": "Currency, ISO 4217.",
            "type": [
              "string",
              "null"
            ]
          },
          "declaration_date": {
            "description": "Date the dividend was announced.",
            "format": "date",
            "type": [
              "string",
              "null"
            ]
          },
          "dividend_type": {
            "description": "Kind of distribution.",
            "enum": [
              "regular",
              "special",
              "long_term_capital_gain",
              "short_term_capital_gain",
              "unknown"
            ],
            "type": "string"
          },
          "ex_dividend_date": {
            "description": "First date the stock trades without the dividend.",
            "format": "date",
            "type": "string"
          },
          "frequency": {
            "description": "Payments per year; 0 for a one-time dividend.",
            "type": [
              "integer",
              "null"
            ]
          },
          "id": {
            "description": "Dividend id.",
            "type": "string"
          },
          "pay_date": {
            "description": "Date the dividend is paid.",
            "format": "date",
            "type": [
              "string",
              "null"
            ]
          },
          "record_date": {
            "description": "Date a holder must be on record.",
            "format": "date",
            "type": [
              "string",
              "null"
            ]
          },
          "symbol": {
            "description": "Ticker symbol.",
            "type": "string"
          }
        },
        "required": [
          "id",
          "symbol",
          "cash_amount",
          "currency",
          "declaration_date",
          "ex_dividend_date",
          "record_date",
          "pay_date",
          "frequency",
          "dividend_type"
        ],
        "type": "object"
      },
      "StocksExchangesRow": {
        "additionalProperties": false,
        "description": "One venue.",
        "properties": {
          "acronym": {
            "description": "Common abbreviation.",
            "type": [
              "string",
              "null"
            ]
          },
          "id": {
            "description": "Numeric exchange id used on trades and quotes.",
            "type": "integer"
          },
          "mic": {
            "description": "Market identifier code (ISO 10383).",
            "type": [
              "string",
              "null"
            ]
          },
          "name": {
            "description": "Venue name.",
            "type": "string"
          },
          "operating_mic": {
            "description": "Market identifier code of the operator.",
            "type": [
              "string",
              "null"
            ]
          },
          "participant_id": {
            "description": "Id the consolidated feeds use for this venue.",
            "type": [
              "string",
              "null"
            ]
          },
          "type": {
            "description": "Kind of venue.",
            "enum": [
              "exchange",
              "trf",
              "sip",
              "orf"
            ],
            "type": "string"
          },
          "url": {
            "description": "Venue website.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "id",
          "type",
          "name",
          "acronym",
          "mic",
          "operating_mic",
          "participant_id",
          "url"
        ],
        "type": "object"
      },
      "StocksFinancialsBalanceRow": {
        "additionalProperties": false,
        "description": "One reporting period. Amounts are in dollars unless noted; a figure the filing does not report is null.",
        "properties": {
          "accounts_payable": {
            "description": "Accounts payable.",
            "type": [
              "number",
              "null"
            ]
          },
          "accrued_and_other_current_liabilities": {
            "description": "Accrued and other current liabilities.",
            "type": [
              "number",
              "null"
            ]
          },
          "accumulated_other_comprehensive_income": {
            "description": "Accumulated other comprehensive income.",
            "type": [
              "number",
              "null"
            ]
          },
          "additional_paid_in_capital": {
            "description": "Additional paid in capital.",
            "type": [
              "number",
              "null"
            ]
          },
          "cash_and_equivalents": {
            "description": "Cash and equivalents.",
            "type": [
              "number",
              "null"
            ]
          },
          "cik": {
            "description": "SEC central index key.",
            "type": [
              "string",
              "null"
            ]
          },
          "commitments_and_contingencies": {
            "description": "Commitments and contingencies.",
            "type": [
              "number",
              "null"
            ]
          },
          "common_stock": {
            "description": "Common stock.",
            "type": [
              "number",
              "null"
            ]
          },
          "debt_current": {
            "description": "Debt current.",
            "type": [
              "number",
              "null"
            ]
          },
          "deferred_revenue_current": {
            "description": "Deferred revenue current.",
            "type": [
              "number",
              "null"
            ]
          },
          "filing_date": {
            "description": "Date of the latest SEC filing that included this period; restated periods carry a later date.",
            "format": "date",
            "type": [
              "string",
              "null"
            ]
          },
          "fiscal_quarter": {
            "description": "Fiscal quarter, 1 to 4.",
            "type": [
              "integer",
              "null"
            ]
          },
          "fiscal_year": {
            "description": "Fiscal year.",
            "type": [
              "integer",
              "null"
            ]
          },
          "goodwill": {
            "description": "Goodwill.",
            "type": [
              "number",
              "null"
            ]
          },
          "intangible_assets_net": {
            "description": "Intangible assets net.",
            "type": [
              "number",
              "null"
            ]
          },
          "inventories": {
            "description": "Inventories.",
            "type": [
              "number",
              "null"
            ]
          },
          "long_term_debt_and_capital_lease_obligations": {
            "description": "Long term debt and capital lease obligations.",
            "type": [
              "number",
              "null"
            ]
          },
          "noncontrolling_interest": {
            "description": "Noncontrolling interest.",
            "type": [
              "number",
              "null"
            ]
          },
          "other_assets": {
            "description": "Other assets.",
            "type": [
              "number",
              "null"
            ]
          },
          "other_current_assets": {
            "description": "Other current assets.",
            "type": [
              "number",
              "null"
            ]
          },
          "other_equity": {
            "description": "Other equity.",
            "type": [
              "number",
              "null"
            ]
          },
          "other_noncurrent_liabilities": {
            "description": "Other noncurrent liabilities.",
            "type": [
              "number",
              "null"
            ]
          },
          "period_end": {
            "description": "Last date of the reporting period.",
            "format": "date",
            "type": "string"
          },
          "preferred_stock": {
            "description": "Preferred stock.",
            "type": [
              "number",
              "null"
            ]
          },
          "property_plant_equipment_net": {
            "description": "Property plant equipment net.",
            "type": [
              "number",
              "null"
            ]
          },
          "receivables": {
            "description": "Receivables.",
            "type": [
              "number",
              "null"
            ]
          },
          "retained_earnings_deficit": {
            "description": "Retained earnings deficit.",
            "type": [
              "number",
              "null"
            ]
          },
          "short_term_investments": {
            "description": "Short term investments.",
            "type": [
              "number",
              "null"
            ]
          },
          "symbols": {
            "description": "Every ticker of the company (several for multiple share classes).",
            "items": {
              "description": "Ticker symbol.",
              "type": "string"
            },
            "type": "array"
          },
          "timeframe": {
            "description": "Period type: quarterly, annual or trailing_twelve_months.",
            "type": [
              "string",
              "null"
            ]
          },
          "total_assets": {
            "description": "Total assets.",
            "type": [
              "number",
              "null"
            ]
          },
          "total_current_assets": {
            "description": "Total current assets.",
            "type": [
              "number",
              "null"
            ]
          },
          "total_current_liabilities": {
            "description": "Total current liabilities.",
            "type": [
              "number",
              "null"
            ]
          },
          "total_equity": {
            "description": "Total equity.",
            "type": [
              "number",
              "null"
            ]
          },
          "total_equity_attributable_to_parent": {
            "description": "Total equity attributable to parent.",
            "type": [
              "number",
              "null"
            ]
          },
          "total_liabilities": {
            "description": "Total liabilities.",
            "type": [
              "number",
              "null"
            ]
          },
          "total_liabilities_and_equity": {
            "description": "Total liabilities and equity.",
            "type": [
              "number",
              "null"
            ]
          },
          "treasury_stock": {
            "description": "Treasury stock.",
            "type": [
              "number",
              "null"
            ]
          }
        },
        "required": [
          "symbols",
          "cik",
          "period_end",
          "timeframe",
          "fiscal_year",
          "fiscal_quarter",
          "filing_date",
          "cash_and_equivalents",
          "short_term_investments",
          "receivables",
          "inventories",
          "other_current_assets",
          "total_current_assets",
          "property_plant_equipment_net",
          "goodwill",
          "intangible_assets_net",
          "other_assets",
          "total_assets",
          "accounts_payable",
          "debt_current",
          "deferred_revenue_current",
          "accrued_and_other_current_liabilities",
          "total_current_liabilities",
          "long_term_debt_and_capital_lease_obligations",
          "other_noncurrent_liabilities",
          "total_liabilities",
          "commitments_and_contingencies",
          "preferred_stock",
          "common_stock",
          "additional_paid_in_capital",
          "retained_earnings_deficit",
          "accumulated_other_comprehensive_income",
          "treasury_stock",
          "other_equity",
          "total_equity_attributable_to_parent",
          "noncontrolling_interest",
          "total_equity",
          "total_liabilities_and_equity"
        ],
        "type": "object"
      },
      "StocksFinancialsCashflowRow": {
        "additionalProperties": false,
        "description": "One reporting period. Amounts are in dollars unless noted; a figure the filing does not report is null.",
        "properties": {
          "cash_from_operating_activities_continuing_operations": {
            "description": "Cash from operating activities continuing operations.",
            "type": [
              "number",
              "null"
            ]
          },
          "change_in_cash_and_equivalents": {
            "description": "Change in cash and equivalents.",
            "type": [
              "number",
              "null"
            ]
          },
          "change_in_other_operating_assets_and_liabilities_net": {
            "description": "Change in other operating assets and liabilities net.",
            "type": [
              "number",
              "null"
            ]
          },
          "cik": {
            "description": "SEC central index key.",
            "type": [
              "string",
              "null"
            ]
          },
          "depreciation_depletion_and_amortization": {
            "description": "Depreciation depletion and amortization.",
            "type": [
              "number",
              "null"
            ]
          },
          "dividends": {
            "description": "Dividends.",
            "type": [
              "number",
              "null"
            ]
          },
          "effect_of_currency_exchange_rate": {
            "description": "Effect of currency exchange rate.",
            "type": [
              "number",
              "null"
            ]
          },
          "filing_date": {
            "description": "Date of the latest SEC filing that included this period; restated periods carry a later date.",
            "format": "date",
            "type": [
              "string",
              "null"
            ]
          },
          "fiscal_quarter": {
            "description": "Fiscal quarter, 1 to 4.",
            "type": [
              "integer",
              "null"
            ]
          },
          "fiscal_year": {
            "description": "Fiscal year.",
            "type": [
              "integer",
              "null"
            ]
          },
          "income_loss_from_discontinued_operations": {
            "description": "Income loss from discontinued operations.",
            "type": [
              "number",
              "null"
            ]
          },
          "long_term_debt_issuances_repayments": {
            "description": "Long term debt issuances repayments.",
            "type": [
              "number",
              "null"
            ]
          },
          "net_cash_from_financing_activities": {
            "description": "Net cash from financing activities.",
            "type": [
              "number",
              "null"
            ]
          },
          "net_cash_from_financing_activities_continuing_operations": {
            "description": "Net cash from financing activities continuing operations.",
            "type": [
              "number",
              "null"
            ]
          },
          "net_cash_from_financing_activities_discontinued_operations": {
            "description": "Net cash from financing activities discontinued operations.",
            "type": [
              "number",
              "null"
            ]
          },
          "net_cash_from_investing_activities": {
            "description": "Net cash from investing activities.",
            "type": [
              "number",
              "null"
            ]
          },
          "net_cash_from_investing_activities_continuing_operations": {
            "description": "Net cash from investing activities continuing operations.",
            "type": [
              "number",
              "null"
            ]
          },
          "net_cash_from_investing_activities_discontinued_operations": {
            "description": "Net cash from investing activities discontinued operations.",
            "type": [
              "number",
              "null"
            ]
          },
          "net_cash_from_operating_activities": {
            "description": "Net cash from operating activities.",
            "type": [
              "number",
              "null"
            ]
          },
          "net_cash_from_operating_activities_discontinued_operations": {
            "description": "Net cash from operating activities discontinued operations.",
            "type": [
              "number",
              "null"
            ]
          },
          "net_income": {
            "description": "Net income.",
            "type": [
              "number",
              "null"
            ]
          },
          "noncontrolling_interests": {
            "description": "Noncontrolling interests.",
            "type": [
              "number",
              "null"
            ]
          },
          "other_cash_adjustments": {
            "description": "Other cash adjustments.",
            "type": [
              "number",
              "null"
            ]
          },
          "other_financing_activities": {
            "description": "Other financing activities.",
            "type": [
              "number",
              "null"
            ]
          },
          "other_investing_activities": {
            "description": "Other investing activities.",
            "type": [
              "number",
              "null"
            ]
          },
          "other_operating_activities": {
            "description": "Other operating activities.",
            "type": [
              "number",
              "null"
            ]
          },
          "period_end": {
            "description": "Last date of the reporting period.",
            "format": "date",
            "type": "string"
          },
          "purchase_of_property_plant_and_equipment": {
            "description": "Purchase of property plant and equipment.",
            "type": [
              "number",
              "null"
            ]
          },
          "sale_of_property_plant_and_equipment": {
            "description": "Sale of property plant and equipment.",
            "type": [
              "number",
              "null"
            ]
          },
          "short_term_debt_issuances_repayments": {
            "description": "Short term debt issuances repayments.",
            "type": [
              "number",
              "null"
            ]
          },
          "symbols": {
            "description": "Every ticker of the company (several for multiple share classes).",
            "items": {
              "description": "Ticker symbol.",
              "type": "string"
            },
            "type": "array"
          },
          "timeframe": {
            "description": "Period type: quarterly, annual or trailing_twelve_months.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "symbols",
          "cik",
          "period_end",
          "timeframe",
          "fiscal_year",
          "fiscal_quarter",
          "filing_date",
          "net_income",
          "depreciation_depletion_and_amortization",
          "change_in_other_operating_assets_and_liabilities_net",
          "other_operating_activities",
          "cash_from_operating_activities_continuing_operations",
          "net_cash_from_operating_activities_discontinued_operations",
          "net_cash_from_operating_activities",
          "purchase_of_property_plant_and_equipment",
          "sale_of_property_plant_and_equipment",
          "other_investing_activities",
          "net_cash_from_investing_activities_continuing_operations",
          "net_cash_from_investing_activities_discontinued_operations",
          "net_cash_from_investing_activities",
          "short_term_debt_issuances_repayments",
          "long_term_debt_issuances_repayments",
          "dividends",
          "other_financing_activities",
          "net_cash_from_financing_activities_continuing_operations",
          "net_cash_from_financing_activities_discontinued_operations",
          "net_cash_from_financing_activities",
          "effect_of_currency_exchange_rate",
          "income_loss_from_discontinued_operations",
          "noncontrolling_interests",
          "other_cash_adjustments",
          "change_in_cash_and_equivalents"
        ],
        "type": "object"
      },
      "StocksFinancialsIncomeRow": {
        "additionalProperties": false,
        "description": "One reporting period. Amounts are in dollars unless noted; a figure the filing does not report is null.",
        "properties": {
          "basic_earnings_per_share": {
            "description": "Basic earnings per share in dollars.",
            "type": [
              "number",
              "null"
            ]
          },
          "basic_shares_outstanding": {
            "description": "Weighted average basic shares outstanding.",
            "type": [
              "number",
              "null"
            ]
          },
          "cik": {
            "description": "SEC central index key.",
            "type": [
              "string",
              "null"
            ]
          },
          "consolidated_net_income_loss": {
            "description": "Consolidated net income loss.",
            "type": [
              "number",
              "null"
            ]
          },
          "cost_of_revenue": {
            "description": "Cost of revenue.",
            "type": [
              "number",
              "null"
            ]
          },
          "depreciation_depletion_amortization": {
            "description": "Depreciation depletion amortization.",
            "type": [
              "number",
              "null"
            ]
          },
          "diluted_earnings_per_share": {
            "description": "Diluted earnings per share in dollars.",
            "type": [
              "number",
              "null"
            ]
          },
          "diluted_shares_outstanding": {
            "description": "Weighted average diluted shares outstanding.",
            "type": [
              "number",
              "null"
            ]
          },
          "discontinued_operations": {
            "description": "Discontinued operations.",
            "type": [
              "number",
              "null"
            ]
          },
          "ebitda": {
            "description": "Ebitda.",
            "type": [
              "number",
              "null"
            ]
          },
          "equity_in_affiliates": {
            "description": "Equity in affiliates.",
            "type": [
              "number",
              "null"
            ]
          },
          "extraordinary_items": {
            "description": "Extraordinary items.",
            "type": [
              "number",
              "null"
            ]
          },
          "filing_date": {
            "description": "Date of the latest SEC filing that included this period; restated periods carry a later date.",
            "format": "date",
            "type": [
              "string",
              "null"
            ]
          },
          "fiscal_quarter": {
            "description": "Fiscal quarter, 1 to 4.",
            "type": [
              "integer",
              "null"
            ]
          },
          "fiscal_year": {
            "description": "Fiscal year.",
            "type": [
              "integer",
              "null"
            ]
          },
          "gross_profit": {
            "description": "Gross profit.",
            "type": [
              "number",
              "null"
            ]
          },
          "income_before_income_taxes": {
            "description": "Income before income taxes.",
            "type": [
              "number",
              "null"
            ]
          },
          "income_taxes": {
            "description": "Income taxes.",
            "type": [
              "number",
              "null"
            ]
          },
          "interest_expense": {
            "description": "Interest expense.",
            "type": [
              "number",
              "null"
            ]
          },
          "interest_income": {
            "description": "Interest income.",
            "type": [
              "number",
              "null"
            ]
          },
          "net_income_loss_attributable_common_shareholders": {
            "description": "Net income or loss attributable to common shareholders.",
            "type": [
              "number",
              "null"
            ]
          },
          "noncontrolling_interest": {
            "description": "Noncontrolling interest.",
            "type": [
              "number",
              "null"
            ]
          },
          "operating_income": {
            "description": "Operating income.",
            "type": [
              "number",
              "null"
            ]
          },
          "other_income_expense": {
            "description": "Other income expense.",
            "type": [
              "number",
              "null"
            ]
          },
          "other_operating_expenses": {
            "description": "Other operating expenses.",
            "type": [
              "number",
              "null"
            ]
          },
          "period_end": {
            "description": "Last date of the reporting period.",
            "format": "date",
            "type": "string"
          },
          "preferred_stock_dividends_declared": {
            "description": "Preferred stock dividends declared.",
            "type": [
              "number",
              "null"
            ]
          },
          "research_development": {
            "description": "Research development.",
            "type": [
              "number",
              "null"
            ]
          },
          "revenue": {
            "description": "Revenue.",
            "type": [
              "number",
              "null"
            ]
          },
          "selling_general_administrative": {
            "description": "Selling general administrative.",
            "type": [
              "number",
              "null"
            ]
          },
          "symbols": {
            "description": "Every ticker of the company (several for multiple share classes).",
            "items": {
              "description": "Ticker symbol.",
              "type": "string"
            },
            "type": "array"
          },
          "timeframe": {
            "description": "Period type: quarterly, annual or trailing_twelve_months.",
            "type": [
              "string",
              "null"
            ]
          },
          "total_operating_expenses": {
            "description": "Total operating expenses.",
            "type": [
              "number",
              "null"
            ]
          },
          "total_other_income_expense": {
            "description": "Total other income expense.",
            "type": [
              "number",
              "null"
            ]
          }
        },
        "required": [
          "symbols",
          "cik",
          "period_end",
          "timeframe",
          "fiscal_year",
          "fiscal_quarter",
          "filing_date",
          "revenue",
          "cost_of_revenue",
          "gross_profit",
          "selling_general_administrative",
          "research_development",
          "depreciation_depletion_amortization",
          "other_operating_expenses",
          "total_operating_expenses",
          "operating_income",
          "interest_income",
          "interest_expense",
          "other_income_expense",
          "total_other_income_expense",
          "income_before_income_taxes",
          "income_taxes",
          "discontinued_operations",
          "extraordinary_items",
          "equity_in_affiliates",
          "consolidated_net_income_loss",
          "noncontrolling_interest",
          "preferred_stock_dividends_declared",
          "net_income_loss_attributable_common_shareholders",
          "basic_shares_outstanding",
          "diluted_shares_outstanding",
          "basic_earnings_per_share",
          "diluted_earnings_per_share",
          "ebitda"
        ],
        "type": "object"
      },
      "StocksFinancialsRatiosRow": {
        "additionalProperties": false,
        "description": "Valuation, liquidity and return ratios for one trading date.",
        "properties": {
          "average_volume": {
            "description": "Average volume over the last 30 trading days.",
            "type": [
              "number",
              "null"
            ]
          },
          "cash": {
            "description": "Cash ratio.",
            "type": [
              "number",
              "null"
            ]
          },
          "cik": {
            "description": "SEC central index key.",
            "type": [
              "string",
              "null"
            ]
          },
          "current": {
            "description": "Current ratio.",
            "type": [
              "number",
              "null"
            ]
          },
          "date": {
            "description": "Trading date the ratios are calculated for.",
            "format": "date",
            "type": "string"
          },
          "debt_to_equity": {
            "description": "Debt to equity.",
            "type": [
              "number",
              "null"
            ]
          },
          "dividend_yield": {
            "description": "Dividend yield.",
            "type": [
              "number",
              "null"
            ]
          },
          "earnings_per_share": {
            "description": "Trailing twelve months earnings per share.",
            "type": [
              "number",
              "null"
            ]
          },
          "enterprise_value": {
            "description": "Enterprise value.",
            "type": [
              "number",
              "null"
            ]
          },
          "ev_to_ebitda": {
            "description": "Ev to ebitda.",
            "type": [
              "number",
              "null"
            ]
          },
          "ev_to_sales": {
            "description": "Ev to sales.",
            "type": [
              "number",
              "null"
            ]
          },
          "free_cash_flow": {
            "description": "Free cash flow.",
            "type": [
              "number",
              "null"
            ]
          },
          "market_cap": {
            "description": "Market cap.",
            "type": [
              "number",
              "null"
            ]
          },
          "price": {
            "description": "Closing price used in the ratios.",
            "type": [
              "number",
              "null"
            ]
          },
          "price_to_book": {
            "description": "Price to book.",
            "type": [
              "number",
              "null"
            ]
          },
          "price_to_cash_flow": {
            "description": "Price to cash flow.",
            "type": [
              "number",
              "null"
            ]
          },
          "price_to_earnings": {
            "description": "Price to earnings.",
            "type": [
              "number",
              "null"
            ]
          },
          "price_to_free_cash_flow": {
            "description": "Price to free cash flow.",
            "type": [
              "number",
              "null"
            ]
          },
          "price_to_sales": {
            "description": "Price to sales.",
            "type": [
              "number",
              "null"
            ]
          },
          "quick": {
            "description": "Quick ratio.",
            "type": [
              "number",
              "null"
            ]
          },
          "return_on_assets": {
            "description": "Return on assets.",
            "type": [
              "number",
              "null"
            ]
          },
          "return_on_equity": {
            "description": "Return on equity.",
            "type": [
              "number",
              "null"
            ]
          },
          "symbol": {
            "description": "Ticker symbol.",
            "type": "string"
          }
        },
        "required": [
          "symbol",
          "date",
          "cik",
          "price",
          "market_cap",
          "enterprise_value",
          "average_volume",
          "earnings_per_share",
          "price_to_earnings",
          "price_to_book",
          "price_to_sales",
          "price_to_cash_flow",
          "price_to_free_cash_flow",
          "ev_to_sales",
          "ev_to_ebitda",
          "free_cash_flow",
          "dividend_yield",
          "debt_to_equity",
          "current",
          "quick",
          "cash",
          "return_on_assets",
          "return_on_equity"
        ],
        "type": "object"
      },
      "StocksImbalancesRow": {
        "additionalProperties": false,
        "description": "An exchange auction imbalance.",
        "properties": {
          "auction_clock_et": {
            "description": "The same time as the exchange publishes it: HH:MM, Eastern Time.",
            "type": [
              "string",
              "null"
            ]
          },
          "auction_timestamp": {
            "description": "Scheduled auction time as an instant, on the Eastern date of timestamp. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": [
              "integer",
              "null"
            ]
          },
          "auction_type": {
            "description": "Auction: opening (core opening), early_opening, reopening (after a halt), closing, extreme_closing_imbalance, regulatory_closing_imbalance.",
            "enum": [
              "early_opening",
              "opening",
              "reopening",
              "closing",
              "extreme_closing_imbalance",
              "regulatory_closing_imbalance",
              "unknown"
            ],
            "type": "string"
          },
          "book_clearing_price": {
            "description": "Indicative auction price.",
            "type": [
              "number",
              "null"
            ]
          },
          "exchange": {
            "description": "Numeric id of the auctioning exchange.",
            "type": [
              "integer",
              "null"
            ]
          },
          "imbalance_quantity": {
            "description": "Imbalance in shares; positive is buy-side.",
            "type": [
              "integer",
              "null"
            ]
          },
          "paired_quantity": {
            "description": "Shares matched at the indicative price.",
            "type": [
              "integer",
              "null"
            ]
          },
          "sequence_number": {
            "description": "Per-symbol sequence number.",
            "type": [
              "integer",
              "null"
            ]
          },
          "symbol": {
            "description": "Ticker.",
            "type": "string"
          },
          "timestamp": {
            "description": "Time of the update. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          }
        },
        "required": [
          "symbol",
          "timestamp",
          "auction_timestamp",
          "auction_clock_et",
          "auction_type",
          "sequence_number",
          "exchange",
          "imbalance_quantity",
          "paired_quantity",
          "book_clearing_price"
        ],
        "type": "object"
      },
      "StocksIndicatorsEmaRow": {
        "additionalProperties": false,
        "description": "One indicator value.",
        "properties": {
          "start_time": {
            "description": "Start of the bar the value belongs to. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "value": {
            "description": "Indicator value.",
            "type": [
              "number",
              "null"
            ]
          }
        },
        "required": [
          "start_time",
          "value"
        ],
        "type": "object"
      },
      "StocksIndicatorsMacdRow": {
        "additionalProperties": false,
        "description": "One indicator value.",
        "properties": {
          "histogram": {
            "description": "MACD line minus the signal line.",
            "type": [
              "number",
              "null"
            ]
          },
          "signal": {
            "description": "Signal line: the EMA of the MACD line.",
            "type": [
              "number",
              "null"
            ]
          },
          "start_time": {
            "description": "Start of the bar the value belongs to. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "value": {
            "description": "Indicator value.",
            "type": [
              "number",
              "null"
            ]
          }
        },
        "required": [
          "start_time",
          "value",
          "signal",
          "histogram"
        ],
        "type": "object"
      },
      "StocksIndicatorsRsiRow": {
        "additionalProperties": false,
        "description": "One indicator value.",
        "properties": {
          "start_time": {
            "description": "Start of the bar the value belongs to. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "value": {
            "description": "Indicator value.",
            "type": [
              "number",
              "null"
            ]
          }
        },
        "required": [
          "start_time",
          "value"
        ],
        "type": "object"
      },
      "StocksIndicatorsSmaRow": {
        "additionalProperties": false,
        "description": "One indicator value.",
        "properties": {
          "start_time": {
            "description": "Start of the bar the value belongs to. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "value": {
            "description": "Indicator value.",
            "type": [
              "number",
              "null"
            ]
          }
        },
        "required": [
          "start_time",
          "value"
        ],
        "type": "object"
      },
      "StocksIposRow": {
        "additionalProperties": false,
        "description": "One IPO.",
        "properties": {
          "announced_date": {
            "description": "Date the IPO was announced.",
            "format": "date",
            "type": [
              "string",
              "null"
            ]
          },
          "currency": {
            "description": "Currency, ISO 4217.",
            "type": [
              "string",
              "null"
            ]
          },
          "final_issue_price": {
            "description": "Final offer price.",
            "type": [
              "number",
              "null"
            ]
          },
          "highest_offer_price": {
            "description": "High end of the offer range.",
            "type": [
              "number",
              "null"
            ]
          },
          "isin": {
            "description": "ISIN.",
            "type": [
              "string",
              "null"
            ]
          },
          "issuer_name": {
            "description": "Issuer name.",
            "type": "string"
          },
          "last_updated": {
            "description": "Date the record last changed.",
            "format": "date",
            "type": [
              "string",
              "null"
            ]
          },
          "listing_date": {
            "description": "First trading date.",
            "format": "date",
            "type": [
              "string",
              "null"
            ]
          },
          "lot_size": {
            "description": "Minimum trade lot.",
            "type": [
              "number",
              "null"
            ]
          },
          "lowest_offer_price": {
            "description": "Low end of the offer range.",
            "type": [
              "number",
              "null"
            ]
          },
          "max_shares_offered": {
            "description": "Upper share count offered.",
            "type": [
              "number",
              "null"
            ]
          },
          "min_shares_offered": {
            "description": "Lower share count offered.",
            "type": [
              "number",
              "null"
            ]
          },
          "primary_exchange": {
            "description": "Market identifier code of the listing exchange.",
            "type": [
              "string",
              "null"
            ]
          },
          "security_description": {
            "description": "Description of the security.",
            "type": [
              "string",
              "null"
            ]
          },
          "security_type": {
            "description": "Security type, for example CS.",
            "type": [
              "string",
              "null"
            ]
          },
          "shares_outstanding": {
            "description": "Shares outstanding after the offering.",
            "type": [
              "number",
              "null"
            ]
          },
          "status": {
            "description": "IPO status.",
            "type": "string"
          },
          "symbol": {
            "description": "Ticker symbol.",
            "type": "string"
          },
          "total_offer_size": {
            "description": "Total raised in dollars.",
            "type": [
              "number",
              "null"
            ]
          },
          "us_code": {
            "description": "Nine-character US security code.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "symbol",
          "issuer_name",
          "status",
          "listing_date",
          "announced_date",
          "last_updated",
          "final_issue_price",
          "lowest_offer_price",
          "highest_offer_price",
          "min_shares_offered",
          "max_shares_offered",
          "total_offer_size",
          "shares_outstanding",
          "lot_size",
          "primary_exchange",
          "security_type",
          "security_description",
          "currency",
          "isin",
          "us_code"
        ],
        "type": "object"
      },
      "StocksLastQuoteRow": {
        "additionalProperties": false,
        "description": "The last quote.",
        "properties": {
          "ask_exchange": {
            "description": "Exchange id quoting the ask.",
            "type": [
              "integer",
              "null"
            ]
          },
          "ask_price": {
            "description": "Best ask.",
            "type": [
              "number",
              "null"
            ]
          },
          "ask_size": {
            "description": "Ask size.",
            "type": [
              "number",
              "null"
            ]
          },
          "bid_exchange": {
            "description": "Exchange id quoting the bid.",
            "type": [
              "integer",
              "null"
            ]
          },
          "bid_price": {
            "description": "Best bid.",
            "type": [
              "number",
              "null"
            ]
          },
          "bid_size": {
            "description": "Bid size.",
            "type": [
              "number",
              "null"
            ]
          },
          "conditions": {
            "description": "Quote condition codes.",
            "items": {
              "description": "Code.",
              "type": "integer"
            },
            "type": "array"
          },
          "indicators": {
            "description": "Indicator codes.",
            "items": {
              "description": "Code.",
              "type": "integer"
            },
            "type": "array"
          },
          "participant_timestamp": {
            "description": "Exchange time. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": [
              "integer",
              "null"
            ]
          },
          "sequence_number": {
            "description": "Consolidated sequence number.",
            "type": "integer"
          },
          "symbol": {
            "description": "Ticker symbol.",
            "type": "string"
          },
          "tape": {
            "description": "Consolidated tape.",
            "type": [
              "integer",
              "null"
            ]
          },
          "timestamp": {
            "description": "Consolidated feed time. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "trf_timestamp": {
            "description": "Facility time. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": [
              "integer",
              "null"
            ]
          }
        },
        "required": [
          "symbol",
          "bid_price",
          "bid_size",
          "bid_exchange",
          "ask_price",
          "ask_size",
          "ask_exchange",
          "conditions",
          "indicators",
          "tape",
          "sequence_number",
          "timestamp",
          "participant_timestamp",
          "trf_timestamp"
        ],
        "type": "object"
      },
      "StocksLastTradeRow": {
        "additionalProperties": false,
        "description": "The last trade.",
        "properties": {
          "conditions": {
            "description": "Trade condition codes.",
            "items": {
              "description": "Condition code.",
              "type": "integer"
            },
            "type": "array"
          },
          "correction": {
            "description": "Correction indicator; null for a regular trade.",
            "type": [
              "integer",
              "null"
            ]
          },
          "exchange": {
            "description": "Numeric id of the executing exchange.",
            "type": "integer"
          },
          "participant_timestamp": {
            "description": "Time the exchange stamped the trade. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": [
              "integer",
              "null"
            ]
          },
          "price": {
            "description": "Trade price.",
            "type": "number"
          },
          "sequence_number": {
            "description": "Consolidated sequence number.",
            "type": "integer"
          },
          "size": {
            "description": "Trade size in shares.",
            "type": "number"
          },
          "symbol": {
            "description": "Ticker symbol.",
            "type": "string"
          },
          "tape": {
            "description": "Consolidated tape (1 = NYSE, 2 = NYSE American, 3 = Nasdaq).",
            "type": [
              "integer",
              "null"
            ]
          },
          "timestamp": {
            "description": "Time the consolidated feed stamped the trade. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "trade_id": {
            "description": "Exchange trade id.",
            "type": "string"
          },
          "trf_id": {
            "description": "Trade reporting facility id for off-exchange trades.",
            "type": [
              "integer",
              "null"
            ]
          },
          "trf_timestamp": {
            "description": "Time the facility stamped an off-exchange trade. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": [
              "integer",
              "null"
            ]
          }
        },
        "required": [
          "symbol",
          "price",
          "size",
          "exchange",
          "tape",
          "conditions",
          "correction",
          "trade_id",
          "sequence_number",
          "timestamp",
          "participant_timestamp",
          "trf_id",
          "trf_timestamp"
        ],
        "type": "object"
      },
      "StocksLuldRow": {
        "additionalProperties": false,
        "description": "A limit up-limit down band update.",
        "properties": {
          "indicators": {
            "description": "LULD indicator codes; 17 is a trading pause and 18 a reopening.",
            "items": {
              "description": "Indicator code.",
              "type": "integer"
            },
            "type": "array"
          },
          "lower_limit_price": {
            "description": "Lower price band.",
            "type": [
              "number",
              "null"
            ]
          },
          "sequence_number": {
            "description": "Sequence number of the update.",
            "type": [
              "integer",
              "null"
            ]
          },
          "state": {
            "description": "band_update for a new band, halted for a trading pause, resumed after one.",
            "enum": [
              "band_update",
              "halted",
              "resumed"
            ],
            "type": "string"
          },
          "symbol": {
            "description": "Ticker.",
            "type": "string"
          },
          "tape": {
            "description": "Consolidated tape.",
            "type": [
              "integer",
              "null"
            ]
          },
          "timestamp": {
            "description": "Time of the update. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "upper_limit_price": {
            "description": "Upper price band.",
            "type": [
              "number",
              "null"
            ]
          }
        },
        "required": [
          "symbol",
          "timestamp",
          "upper_limit_price",
          "lower_limit_price",
          "indicators",
          "tape",
          "sequence_number",
          "state"
        ],
        "type": "object"
      },
      "StocksMarketMapRow": {
        "additionalProperties": false,
        "description": "The market map.",
        "properties": {
          "metric": {
            "description": "The metric value holds.",
            "enum": [
              "change_percent",
              "change",
              "volume",
              "dollar_volume",
              "market_cap"
            ],
            "type": "string"
          },
          "rows": {
            "description": "Companies, largest market capitalization first.",
            "items": {
              "additionalProperties": false,
              "description": "One company.",
              "properties": {
                "change": {
                  "description": "Price minus the previous close.",
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "change_percent": {
                  "description": "Change as a percentage.",
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "dollar_volume": {
                  "description": "Shares traded times price.",
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "industry": {
                  "description": "Industry text from the SIC code.",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "market_cap": {
                  "description": "Market capitalization in dollars.",
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "name": {
                  "description": "Company name.",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "previous_close": {
                  "description": "Previous close.",
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "price": {
                  "description": "Latest price.",
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "sector": {
                  "description": "Approximate market sector.",
                  "type": [
                    "string",
                    "null"
                  ]
                },
                "symbol": {
                  "description": "Ticker symbol.",
                  "type": "string"
                },
                "value": {
                  "description": "The chosen metric.",
                  "type": [
                    "number",
                    "null"
                  ]
                },
                "volume": {
                  "description": "Shares traded today.",
                  "type": [
                    "number",
                    "null"
                  ]
                }
              },
              "required": [
                "symbol",
                "name",
                "sector",
                "industry",
                "market_cap",
                "price",
                "previous_close",
                "change",
                "change_percent",
                "volume",
                "dollar_volume",
                "value"
              ],
              "type": "object"
            },
            "type": "array"
          }
        },
        "required": [
          "metric",
          "rows"
        ],
        "type": "object"
      },
      "StocksMoversRow": {
        "additionalProperties": false,
        "description": "Current-day state of one stock.",
        "properties": {
          "change": {
            "description": "Price minus the previous close.",
            "type": [
              "number",
              "null"
            ]
          },
          "change_percent": {
            "description": "Change as a percentage of the previous close.",
            "type": [
              "number",
              "null"
            ]
          },
          "day": {
            "additionalProperties": false,
            "description": "Today's bar so far; null before the first trade of the day.",
            "properties": {
              "close": {
                "description": "Close.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "high": {
                "description": "High.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "low": {
                "description": "Low.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "open": {
                "description": "Open.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "volume": {
                "description": "Volume in shares.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "vwap": {
                "description": "Volume weighted average price.",
                "type": [
                  "number",
                  "null"
                ]
              }
            },
            "required": [
              "open",
              "high",
              "low",
              "close",
              "volume",
              "vwap"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "last_quote": {
            "additionalProperties": false,
            "description": "The last NBBO quote; sizes are in round lots.",
            "properties": {
              "ask_price": {
                "description": "Best ask.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "ask_size": {
                "description": "Ask size in round lots.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "bid_price": {
                "description": "Best bid.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "bid_size": {
                "description": "Bid size in round lots.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "timestamp": {
                "description": "Consolidated feed time. Unix epoch milliseconds (UTC).",
                "format": "unix-ms",
                "type": "integer"
              }
            },
            "required": [
              "bid_price",
              "bid_size",
              "ask_price",
              "ask_size",
              "timestamp"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "last_trade": {
            "additionalProperties": false,
            "description": "The last trade.",
            "properties": {
              "conditions": {
                "description": "Condition codes.",
                "items": {
                  "description": "Code.",
                  "type": "integer"
                },
                "type": "array"
              },
              "exchange": {
                "description": "Exchange id.",
                "type": "integer"
              },
              "price": {
                "description": "Price.",
                "type": "number"
              },
              "size": {
                "description": "Size in shares.",
                "type": "number"
              },
              "timestamp": {
                "description": "Consolidated feed time. Unix epoch milliseconds (UTC).",
                "format": "unix-ms",
                "type": "integer"
              },
              "trade_id": {
                "description": "Trade id.",
                "type": "string"
              }
            },
            "required": [
              "price",
              "size",
              "exchange",
              "conditions",
              "trade_id",
              "timestamp"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "minute": {
            "additionalProperties": false,
            "description": "The latest minute bar.",
            "properties": {
              "accumulated_volume": {
                "description": "Volume accumulated today.",
                "type": "number"
              },
              "close": {
                "description": "Close.",
                "type": "number"
              },
              "high": {
                "description": "High.",
                "type": "number"
              },
              "low": {
                "description": "Low.",
                "type": "number"
              },
              "open": {
                "description": "Open.",
                "type": "number"
              },
              "start_time": {
                "description": "Start of the minute. Unix epoch milliseconds (UTC).",
                "format": "unix-ms",
                "type": "integer"
              },
              "trades": {
                "description": "Trades in the minute.",
                "type": "integer"
              },
              "volume": {
                "description": "Volume of the minute.",
                "type": "number"
              },
              "vwap": {
                "description": "Volume weighted average price.",
                "type": [
                  "number",
                  "null"
                ]
              }
            },
            "required": [
              "start_time",
              "open",
              "high",
              "low",
              "close",
              "volume",
              "accumulated_volume",
              "vwap",
              "trades"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "prev_day": {
            "additionalProperties": false,
            "description": "The previous trading day's bar.",
            "properties": {
              "close": {
                "description": "Close.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "high": {
                "description": "High.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "low": {
                "description": "Low.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "open": {
                "description": "Open.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "volume": {
                "description": "Volume in shares.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "vwap": {
                "description": "Volume weighted average price.",
                "type": [
                  "number",
                  "null"
                ]
              }
            },
            "required": [
              "open",
              "high",
              "low",
              "close",
              "volume",
              "vwap"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "price": {
            "description": "Last trade price, falling back to the day close.",
            "type": [
              "number",
              "null"
            ]
          },
          "symbol": {
            "description": "Ticker symbol.",
            "type": "string"
          },
          "timestamp": {
            "description": "Time of the last update. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": [
              "integer",
              "null"
            ]
          }
        },
        "required": [
          "symbol",
          "price",
          "change",
          "change_percent",
          "day",
          "prev_day",
          "minute",
          "last_trade",
          "last_quote",
          "timestamp"
        ],
        "type": "object"
      },
      "StocksNewsRow": {
        "additionalProperties": false,
        "description": "One article.",
        "properties": {
          "author": {
            "description": "Author.",
            "type": [
              "string",
              "null"
            ]
          },
          "description": {
            "description": "Summary of the article.",
            "type": [
              "string",
              "null"
            ]
          },
          "id": {
            "description": "Article id.",
            "type": "string"
          },
          "image_url": {
            "description": "Link to the article image.",
            "type": [
              "string",
              "null"
            ]
          },
          "insights": {
            "description": "Sentiment per ticker.",
            "items": {
              "additionalProperties": false,
              "description": "One insight.",
              "properties": {
                "reasoning": {
                  "description": "Why the article carries this sentiment.",
                  "type": "string"
                },
                "sentiment": {
                  "description": "Sentiment.",
                  "enum": [
                    "positive",
                    "neutral",
                    "negative"
                  ],
                  "type": "string"
                },
                "symbol": {
                  "description": "Ticker symbol.",
                  "type": "string"
                }
              },
              "required": [
                "symbol",
                "sentiment",
                "reasoning"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "keywords": {
            "description": "Keywords.",
            "items": {
              "description": "Keyword.",
              "type": "string"
            },
            "type": "array"
          },
          "publisher": {
            "additionalProperties": false,
            "description": "The publishing outlet.",
            "properties": {
              "homepage_url": {
                "description": "Outlet website.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "name": {
                "description": "Outlet name.",
                "type": "string"
              }
            },
            "required": [
              "name",
              "homepage_url"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "symbols": {
            "description": "Tickers the article mentions.",
            "items": {
              "description": "Ticker symbol.",
              "type": "string"
            },
            "type": "array"
          },
          "timestamp": {
            "description": "Publication time. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "title": {
            "description": "Headline.",
            "type": "string"
          },
          "url": {
            "description": "Link to the article at the publisher.",
            "type": [
              "string",
              "null"
            ]
          }
        },
        "required": [
          "id",
          "title",
          "author",
          "description",
          "url",
          "image_url",
          "timestamp",
          "publisher",
          "symbols",
          "keywords",
          "insights"
        ],
        "type": "object"
      },
      "StocksOpenCloseRow": {
        "additionalProperties": false,
        "description": "The daily summary.",
        "properties": {
          "adjusted": {
            "description": "Prices are split adjusted.",
            "type": "boolean"
          },
          "after_hours": {
            "description": "After-hours closing price.",
            "type": [
              "number",
              "null"
            ]
          },
          "close": {
            "description": "Regular-session close.",
            "type": "number"
          },
          "date": {
            "description": "Trading date.",
            "format": "date",
            "type": "string"
          },
          "high": {
            "description": "High.",
            "type": "number"
          },
          "low": {
            "description": "Low.",
            "type": "number"
          },
          "open": {
            "description": "Regular-session open.",
            "type": "number"
          },
          "pre_market": {
            "description": "Pre-market opening price.",
            "type": [
              "number",
              "null"
            ]
          },
          "symbol": {
            "description": "Ticker symbol.",
            "type": "string"
          },
          "volume": {
            "description": "Volume in shares.",
            "type": "number"
          }
        },
        "required": [
          "symbol",
          "date",
          "open",
          "high",
          "low",
          "close",
          "volume",
          "pre_market",
          "after_hours",
          "adjusted"
        ],
        "type": "object"
      },
      "StocksPreviousCloseRow": {
        "additionalProperties": false,
        "description": "The previous day's bar.",
        "properties": {
          "close": {
            "description": "Close.",
            "type": "number"
          },
          "date": {
            "description": "Trading date of the bar.",
            "format": "date",
            "type": "string"
          },
          "high": {
            "description": "High.",
            "type": "number"
          },
          "low": {
            "description": "Low.",
            "type": "number"
          },
          "open": {
            "description": "Open.",
            "type": "number"
          },
          "start_time": {
            "description": "Start of the bar's window. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "symbol": {
            "description": "Ticker symbol.",
            "type": "string"
          },
          "trades": {
            "description": "Number of trades.",
            "type": [
              "integer",
              "null"
            ]
          },
          "volume": {
            "description": "Volume in shares.",
            "type": "number"
          },
          "vwap": {
            "description": "Volume weighted average price.",
            "type": [
              "number",
              "null"
            ]
          }
        },
        "required": [
          "symbol",
          "date",
          "start_time",
          "open",
          "high",
          "low",
          "close",
          "volume",
          "vwap",
          "trades"
        ],
        "type": "object"
      },
      "StocksPrintsLargeRow": {
        "additionalProperties": false,
        "description": "One large print.",
        "properties": {
          "conditions": {
            "description": "Trade condition codes.",
            "items": {
              "description": "Code.",
              "type": "integer"
            },
            "type": "array"
          },
          "exchange": {
            "description": "Numeric id of the reporting venue; see /v1/stocks/exchanges.",
            "type": "integer"
          },
          "flags": {
            "description": "Classification flags of the print.",
            "items": {
              "description": "Flag.",
              "type": "string"
            },
            "type": "array"
          },
          "notional": {
            "description": "Price times size, in dollars.",
            "type": "number"
          },
          "off_exchange": {
            "description": "Reported through a trade reporting facility.",
            "type": "boolean"
          },
          "participant_timestamp": {
            "description": "Time the exchange or facility stamped the print. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "price": {
            "description": "Price.",
            "type": "number"
          },
          "size": {
            "description": "Size in shares.",
            "type": "number"
          },
          "symbol": {
            "description": "Ticker symbol.",
            "type": "string"
          },
          "timestamp": {
            "description": "Time the consolidated feed stamped the print. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "trade_id": {
            "description": "Platform id of the print, stable across requests.",
            "type": "string"
          },
          "trf_id": {
            "description": "Facility that received an off-exchange report.",
            "type": [
              "integer",
              "null"
            ]
          }
        },
        "required": [
          "trade_id",
          "symbol",
          "price",
          "size",
          "notional",
          "exchange",
          "off_exchange",
          "trf_id",
          "conditions",
          "flags",
          "timestamp",
          "participant_timestamp"
        ],
        "type": "object"
      },
      "StocksQuotesRow": {
        "additionalProperties": false,
        "description": "One NBBO quote.",
        "properties": {
          "ask_exchange": {
            "description": "Exchange id quoting the ask.",
            "type": [
              "integer",
              "null"
            ]
          },
          "ask_price": {
            "description": "Best ask.",
            "type": [
              "number",
              "null"
            ]
          },
          "ask_size": {
            "description": "Ask size.",
            "type": [
              "number",
              "null"
            ]
          },
          "bid_exchange": {
            "description": "Exchange id quoting the bid.",
            "type": [
              "integer",
              "null"
            ]
          },
          "bid_price": {
            "description": "Best bid.",
            "type": [
              "number",
              "null"
            ]
          },
          "bid_size": {
            "description": "Bid size.",
            "type": [
              "number",
              "null"
            ]
          },
          "conditions": {
            "description": "Quote condition codes; see /v1/stocks/conditions.",
            "items": {
              "description": "Code.",
              "type": "integer"
            },
            "type": "array"
          },
          "indicators": {
            "description": "Indicator codes.",
            "items": {
              "description": "Code.",
              "type": "integer"
            },
            "type": "array"
          },
          "participant_timestamp": {
            "description": "Time the exchange stamped the quote. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": [
              "integer",
              "null"
            ]
          },
          "sequence_number": {
            "description": "Consolidated sequence number.",
            "type": "integer"
          },
          "symbol": {
            "description": "Ticker symbol.",
            "type": "string"
          },
          "tape": {
            "description": "Consolidated tape.",
            "type": [
              "integer",
              "null"
            ]
          },
          "timestamp": {
            "description": "Time the consolidated feed stamped the quote. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "timestamp_ns": {
            "description": "The same time in nanoseconds, as a string.",
            "type": "string"
          },
          "trf_timestamp": {
            "description": "Facility time. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": [
              "integer",
              "null"
            ]
          }
        },
        "required": [
          "symbol",
          "bid_price",
          "bid_size",
          "bid_exchange",
          "ask_price",
          "ask_size",
          "ask_exchange",
          "conditions",
          "indicators",
          "tape",
          "sequence_number",
          "timestamp",
          "timestamp_ns",
          "participant_timestamp",
          "trf_timestamp"
        ],
        "type": "object"
      },
      "StocksRelatedRow": {
        "additionalProperties": false,
        "description": "Related symbols.",
        "properties": {
          "related": {
            "description": "Related ticker symbols.",
            "items": {
              "description": "Ticker symbol.",
              "type": "string"
            },
            "type": "array"
          },
          "symbol": {
            "description": "Ticker symbol queried.",
            "type": "string"
          }
        },
        "required": [
          "symbol",
          "related"
        ],
        "type": "object"
      },
      "StocksShortInterestRow": {
        "additionalProperties": false,
        "description": "One settlement.",
        "properties": {
          "avg_daily_volume": {
            "description": "Average daily trading volume used for days to cover.",
            "type": "integer"
          },
          "days_to_cover": {
            "description": "Short interest divided by average daily volume.",
            "type": [
              "number",
              "null"
            ]
          },
          "settlement_date": {
            "description": "Settlement date.",
            "format": "date",
            "type": "string"
          },
          "short_interest": {
            "description": "Shares sold short and not yet covered.",
            "type": [
              "integer",
              "null"
            ]
          },
          "symbol": {
            "description": "Ticker symbol.",
            "type": "string"
          }
        },
        "required": [
          "symbol",
          "settlement_date",
          "short_interest",
          "avg_daily_volume",
          "days_to_cover"
        ],
        "type": "object"
      },
      "StocksShortVolumeRow": {
        "additionalProperties": false,
        "description": "One trading day.",
        "properties": {
          "date": {
            "description": "Trading date.",
            "format": "date",
            "type": "string"
          },
          "exempt_volume": {
            "description": "Short volume exempt from Regulation SHO.",
            "type": [
              "number",
              "null"
            ]
          },
          "facilities": {
            "description": "Short volume by reporting facility.",
            "items": {
              "additionalProperties": false,
              "description": "One facility.",
              "properties": {
                "facility": {
                  "description": "Facility.",
                  "enum": [
                    "finra_adf",
                    "nasdaq_carteret",
                    "nasdaq_chicago",
                    "nyse"
                  ],
                  "type": "string"
                },
                "short_volume": {
                  "description": "Short volume excluding exempt.",
                  "type": [
                    "integer",
                    "null"
                  ]
                },
                "short_volume_exempt": {
                  "description": "Exempt short volume.",
                  "type": [
                    "integer",
                    "null"
                  ]
                }
              },
              "required": [
                "facility",
                "short_volume",
                "short_volume_exempt"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "non_exempt_volume": {
            "description": "Short volume not exempt.",
            "type": [
              "number",
              "null"
            ]
          },
          "short_volume": {
            "description": "Shares sold short.",
            "type": [
              "number",
              "null"
            ]
          },
          "short_volume_ratio": {
            "description": "Short volume as a percentage of total volume.",
            "type": [
              "number",
              "null"
            ]
          },
          "symbol": {
            "description": "Ticker symbol.",
            "type": "string"
          },
          "total_volume": {
            "description": "Total reported volume.",
            "type": [
              "number",
              "null"
            ]
          }
        },
        "required": [
          "symbol",
          "date",
          "short_volume",
          "total_volume",
          "short_volume_ratio",
          "exempt_volume",
          "non_exempt_volume",
          "facilities"
        ],
        "type": "object"
      },
      "StocksSnapshotAllRow": {
        "additionalProperties": false,
        "description": "Current-day state of one stock.",
        "properties": {
          "change": {
            "description": "Price minus the previous close.",
            "type": [
              "number",
              "null"
            ]
          },
          "change_percent": {
            "description": "Change as a percentage of the previous close.",
            "type": [
              "number",
              "null"
            ]
          },
          "day": {
            "additionalProperties": false,
            "description": "Today's bar so far; null before the first trade of the day.",
            "properties": {
              "close": {
                "description": "Close.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "high": {
                "description": "High.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "low": {
                "description": "Low.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "open": {
                "description": "Open.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "volume": {
                "description": "Volume in shares.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "vwap": {
                "description": "Volume weighted average price.",
                "type": [
                  "number",
                  "null"
                ]
              }
            },
            "required": [
              "open",
              "high",
              "low",
              "close",
              "volume",
              "vwap"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "last_quote": {
            "additionalProperties": false,
            "description": "The last NBBO quote; sizes are in round lots.",
            "properties": {
              "ask_price": {
                "description": "Best ask.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "ask_size": {
                "description": "Ask size in round lots.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "bid_price": {
                "description": "Best bid.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "bid_size": {
                "description": "Bid size in round lots.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "timestamp": {
                "description": "Consolidated feed time. Unix epoch milliseconds (UTC).",
                "format": "unix-ms",
                "type": "integer"
              }
            },
            "required": [
              "bid_price",
              "bid_size",
              "ask_price",
              "ask_size",
              "timestamp"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "last_trade": {
            "additionalProperties": false,
            "description": "The last trade.",
            "properties": {
              "conditions": {
                "description": "Condition codes.",
                "items": {
                  "description": "Code.",
                  "type": "integer"
                },
                "type": "array"
              },
              "exchange": {
                "description": "Exchange id.",
                "type": "integer"
              },
              "price": {
                "description": "Price.",
                "type": "number"
              },
              "size": {
                "description": "Size in shares.",
                "type": "number"
              },
              "timestamp": {
                "description": "Consolidated feed time. Unix epoch milliseconds (UTC).",
                "format": "unix-ms",
                "type": "integer"
              },
              "trade_id": {
                "description": "Trade id.",
                "type": "string"
              }
            },
            "required": [
              "price",
              "size",
              "exchange",
              "conditions",
              "trade_id",
              "timestamp"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "minute": {
            "additionalProperties": false,
            "description": "The latest minute bar.",
            "properties": {
              "accumulated_volume": {
                "description": "Volume accumulated today.",
                "type": "number"
              },
              "close": {
                "description": "Close.",
                "type": "number"
              },
              "high": {
                "description": "High.",
                "type": "number"
              },
              "low": {
                "description": "Low.",
                "type": "number"
              },
              "open": {
                "description": "Open.",
                "type": "number"
              },
              "start_time": {
                "description": "Start of the minute. Unix epoch milliseconds (UTC).",
                "format": "unix-ms",
                "type": "integer"
              },
              "trades": {
                "description": "Trades in the minute.",
                "type": "integer"
              },
              "volume": {
                "description": "Volume of the minute.",
                "type": "number"
              },
              "vwap": {
                "description": "Volume weighted average price.",
                "type": [
                  "number",
                  "null"
                ]
              }
            },
            "required": [
              "start_time",
              "open",
              "high",
              "low",
              "close",
              "volume",
              "accumulated_volume",
              "vwap",
              "trades"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "prev_day": {
            "additionalProperties": false,
            "description": "The previous trading day's bar.",
            "properties": {
              "close": {
                "description": "Close.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "high": {
                "description": "High.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "low": {
                "description": "Low.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "open": {
                "description": "Open.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "volume": {
                "description": "Volume in shares.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "vwap": {
                "description": "Volume weighted average price.",
                "type": [
                  "number",
                  "null"
                ]
              }
            },
            "required": [
              "open",
              "high",
              "low",
              "close",
              "volume",
              "vwap"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "price": {
            "description": "Last trade price, falling back to the day close.",
            "type": [
              "number",
              "null"
            ]
          },
          "symbol": {
            "description": "Ticker symbol.",
            "type": "string"
          },
          "timestamp": {
            "description": "Time of the last update. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": [
              "integer",
              "null"
            ]
          }
        },
        "required": [
          "symbol",
          "price",
          "change",
          "change_percent",
          "day",
          "prev_day",
          "minute",
          "last_trade",
          "last_quote",
          "timestamp"
        ],
        "type": "object"
      },
      "StocksSnapshotRow": {
        "additionalProperties": false,
        "description": "Current-day state of one stock.",
        "properties": {
          "change": {
            "description": "Price minus the previous close.",
            "type": [
              "number",
              "null"
            ]
          },
          "change_percent": {
            "description": "Change as a percentage of the previous close.",
            "type": [
              "number",
              "null"
            ]
          },
          "day": {
            "additionalProperties": false,
            "description": "Today's bar so far; null before the first trade of the day.",
            "properties": {
              "close": {
                "description": "Close.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "high": {
                "description": "High.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "low": {
                "description": "Low.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "open": {
                "description": "Open.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "volume": {
                "description": "Volume in shares.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "vwap": {
                "description": "Volume weighted average price.",
                "type": [
                  "number",
                  "null"
                ]
              }
            },
            "required": [
              "open",
              "high",
              "low",
              "close",
              "volume",
              "vwap"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "last_quote": {
            "additionalProperties": false,
            "description": "The last NBBO quote; sizes are in round lots.",
            "properties": {
              "ask_price": {
                "description": "Best ask.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "ask_size": {
                "description": "Ask size in round lots.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "bid_price": {
                "description": "Best bid.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "bid_size": {
                "description": "Bid size in round lots.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "timestamp": {
                "description": "Consolidated feed time. Unix epoch milliseconds (UTC).",
                "format": "unix-ms",
                "type": "integer"
              }
            },
            "required": [
              "bid_price",
              "bid_size",
              "ask_price",
              "ask_size",
              "timestamp"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "last_trade": {
            "additionalProperties": false,
            "description": "The last trade.",
            "properties": {
              "conditions": {
                "description": "Condition codes.",
                "items": {
                  "description": "Code.",
                  "type": "integer"
                },
                "type": "array"
              },
              "exchange": {
                "description": "Exchange id.",
                "type": "integer"
              },
              "price": {
                "description": "Price.",
                "type": "number"
              },
              "size": {
                "description": "Size in shares.",
                "type": "number"
              },
              "timestamp": {
                "description": "Consolidated feed time. Unix epoch milliseconds (UTC).",
                "format": "unix-ms",
                "type": "integer"
              },
              "trade_id": {
                "description": "Trade id.",
                "type": "string"
              }
            },
            "required": [
              "price",
              "size",
              "exchange",
              "conditions",
              "trade_id",
              "timestamp"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "minute": {
            "additionalProperties": false,
            "description": "The latest minute bar.",
            "properties": {
              "accumulated_volume": {
                "description": "Volume accumulated today.",
                "type": "number"
              },
              "close": {
                "description": "Close.",
                "type": "number"
              },
              "high": {
                "description": "High.",
                "type": "number"
              },
              "low": {
                "description": "Low.",
                "type": "number"
              },
              "open": {
                "description": "Open.",
                "type": "number"
              },
              "start_time": {
                "description": "Start of the minute. Unix epoch milliseconds (UTC).",
                "format": "unix-ms",
                "type": "integer"
              },
              "trades": {
                "description": "Trades in the minute.",
                "type": "integer"
              },
              "volume": {
                "description": "Volume of the minute.",
                "type": "number"
              },
              "vwap": {
                "description": "Volume weighted average price.",
                "type": [
                  "number",
                  "null"
                ]
              }
            },
            "required": [
              "start_time",
              "open",
              "high",
              "low",
              "close",
              "volume",
              "accumulated_volume",
              "vwap",
              "trades"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "prev_day": {
            "additionalProperties": false,
            "description": "The previous trading day's bar.",
            "properties": {
              "close": {
                "description": "Close.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "high": {
                "description": "High.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "low": {
                "description": "Low.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "open": {
                "description": "Open.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "volume": {
                "description": "Volume in shares.",
                "type": [
                  "number",
                  "null"
                ]
              },
              "vwap": {
                "description": "Volume weighted average price.",
                "type": [
                  "number",
                  "null"
                ]
              }
            },
            "required": [
              "open",
              "high",
              "low",
              "close",
              "volume",
              "vwap"
            ],
            "type": [
              "object",
              "null"
            ]
          },
          "price": {
            "description": "Last trade price, falling back to the day close.",
            "type": [
              "number",
              "null"
            ]
          },
          "symbol": {
            "description": "Ticker symbol.",
            "type": "string"
          },
          "timestamp": {
            "description": "Time of the last update. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": [
              "integer",
              "null"
            ]
          }
        },
        "required": [
          "symbol",
          "price",
          "change",
          "change_percent",
          "day",
          "prev_day",
          "minute",
          "last_trade",
          "last_quote",
          "timestamp"
        ],
        "type": "object"
      },
      "StocksSplitsRow": {
        "additionalProperties": false,
        "description": "One split.",
        "properties": {
          "execution_date": {
            "description": "Date the split took effect.",
            "format": "date",
            "type": "string"
          },
          "id": {
            "description": "Split id.",
            "type": "string"
          },
          "split_from": {
            "description": "Old shares in the ratio.",
            "type": "number"
          },
          "split_to": {
            "description": "New shares in the ratio.",
            "type": "number"
          },
          "symbol": {
            "description": "Ticker symbol.",
            "type": "string"
          },
          "type": {
            "description": "Kind of split.",
            "enum": [
              "forward",
              "reverse",
              "other"
            ],
            "type": "string"
          }
        },
        "required": [
          "id",
          "symbol",
          "execution_date",
          "split_from",
          "split_to",
          "type"
        ],
        "type": "object"
      },
      "StocksTickerDetailsRow": {
        "additionalProperties": false,
        "description": "Company details.",
        "properties": {
          "active": {
            "description": "The security is actively traded.",
            "type": "boolean"
          },
          "address": {
            "additionalProperties": false,
            "description": "Headquarters address.",
            "properties": {
              "address1": {
                "description": "First address line.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "address2": {
                "description": "Second address line.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "city": {
                "description": "City.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "postal_code": {
                "description": "Postal code.",
                "type": [
                  "string",
                  "null"
                ]
              },
              "state": {
                "description": "State.",
                "type": [
                  "string",
                  "null"
                ]
              }
            },
            "type": [
              "object",
              "null"
            ]
          },
          "cik": {
            "description": "SEC central index key.",
            "type": [
              "string",
              "null"
            ]
          },
          "composite_figi": {
            "description": "Composite FIGI identifier.",
            "type": [
              "string",
              "null"
            ]
          },
          "currency": {
            "description": "Trading currency, ISO 4217.",
            "type": [
              "string",
              "null"
            ]
          },
          "delisted_timestamp": {
            "description": "Last time the security traded, when delisted. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": [
              "integer",
              "null"
            ]
          },
          "description": {
            "description": "What the company does.",
            "type": [
              "string",
              "null"
            ]
          },
          "homepage_url": {
            "description": "Company website.",
            "type": [
              "string",
              "null"
            ]
          },
          "list_date": {
            "description": "First public listing date.",
            "format": "date",
            "type": [
              "string",
              "null"
            ]
          },
          "locale": {
            "description": "Locale of the listing.",
            "type": "string"
          },
          "market": {
            "description": "Market the security trades in.",
            "type": "string"
          },
          "market_cap": {
            "description": "Market capitalization in dollars.",
            "type": [
              "number",
              "null"
            ]
          },
          "name": {
            "description": "Registered company name.",
            "type": "string"
          },
          "phone_number": {
            "description": "Company phone number.",
            "type": [
              "string",
              "null"
            ]
          },
          "primary_exchange": {
            "description": "Market identifier code of the primary listing exchange.",
            "type": [
              "string",
              "null"
            ]
          },
          "round_lot": {
            "description": "Round lot size.",
            "type": [
              "number",
              "null"
            ]
          },
          "sector": {
            "description": "Approximate market sector derived from the SIC code.",
            "type": [
              "string",
              "null"
            ]
          },
          "share_class_figi": {
            "description": "Share class FIGI identifier.",
            "type": [
              "string",
              "null"
            ]
          },
          "share_class_shares_outstanding": {
            "description": "Shares outstanding of this share class.",
            "type": [
              "number",
              "null"
            ]
          },
          "sic_code": {
            "description": "Standard industrial classification code.",
            "type": [
              "string",
              "null"
            ]
          },
          "sic_description": {
            "description": "Text of the SIC code.",
            "type": [
              "string",
              "null"
            ]
          },
          "symbol": {
            "description": "Ticker symbol.",
            "type": "string"
          },
          "ticker_root": {
            "description": "Root of the symbol, BRK for BRK.B.",
            "type": [
              "string",
              "null"
            ]
          },
          "ticker_suffix": {
            "description": "Share class suffix of the symbol, B for BRK.B.",
            "type": [
              "string",
              "null"
            ]
          },
          "total_employees": {
            "description": "Approximate number of employees.",
            "type": [
              "number",
              "null"
            ]
          },
          "type": {
            "description": "Security type, for example CS.",
            "type": [
              "string",
              "null"
            ]
          },
          "weighted_shares_outstanding": {
            "description": "Shares outstanding with every share class converted to this class.",
            "type": [
              "number",
              "null"
            ]
          }
        },
        "required": [
          "symbol",
          "name",
          "market",
          "locale",
          "type",
          "active",
          "primary_exchange",
          "currency",
          "cik",
          "composite_figi",
          "share_class_figi",
          "description",
          "homepage_url",
          "list_date",
          "delisted_timestamp",
          "market_cap",
          "round_lot",
          "share_class_shares_outstanding",
          "weighted_shares_outstanding",
          "sic_code",
          "sic_description",
          "sector",
          "ticker_root",
          "ticker_suffix",
          "total_employees",
          "phone_number",
          "address"
        ],
        "type": "object"
      },
      "StocksTickerEventsRow": {
        "additionalProperties": false,
        "description": "Event timeline.",
        "properties": {
          "composite_figi": {
            "description": "Composite FIGI identifier of the entity.",
            "type": [
              "string",
              "null"
            ]
          },
          "events": {
            "description": "Events, oldest first.",
            "items": {
              "additionalProperties": false,
              "description": "One event.",
              "properties": {
                "date": {
                  "description": "Date the event took effect.",
                  "format": "date",
                  "type": "string"
                },
                "symbol": {
                  "description": "Symbol the entity traded under from that date.",
                  "type": "string"
                },
                "type": {
                  "description": "Event type.",
                  "enum": [
                    "ticker_change"
                  ],
                  "type": "string"
                }
              },
              "required": [
                "type",
                "date",
                "symbol"
              ],
              "type": "object"
            },
            "type": "array"
          },
          "name": {
            "description": "Company name.",
            "type": [
              "string",
              "null"
            ]
          },
          "symbol": {
            "description": "Ticker symbol queried.",
            "type": "string"
          }
        },
        "required": [
          "symbol",
          "name",
          "composite_figi",
          "events"
        ],
        "type": "object"
      },
      "StocksTickersRow": {
        "additionalProperties": false,
        "description": "One listed security.",
        "properties": {
          "active": {
            "description": "The security is actively traded; false once it has been delisted.",
            "type": "boolean"
          },
          "cik": {
            "description": "SEC central index key.",
            "type": [
              "string",
              "null"
            ]
          },
          "composite_figi": {
            "description": "Composite FIGI identifier.",
            "type": [
              "string",
              "null"
            ]
          },
          "currency": {
            "description": "Trading currency, ISO 4217.",
            "type": [
              "string",
              "null"
            ]
          },
          "delisted_timestamp": {
            "description": "Last time the security traded, when delisted. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": [
              "integer",
              "null"
            ]
          },
          "locale": {
            "description": "Locale of the listing, us or global.",
            "type": "string"
          },
          "market": {
            "description": "Market the security trades in.",
            "enum": [
              "stocks",
              "otc",
              "crypto",
              "fx",
              "indices"
            ],
            "type": "string"
          },
          "name": {
            "description": "Registered name of the security.",
            "type": "string"
          },
          "primary_exchange": {
            "description": "Market identifier code (ISO 10383) of the primary listing exchange.",
            "type": [
              "string",
              "null"
            ]
          },
          "share_class_figi": {
            "description": "Share class FIGI identifier.",
            "type": [
              "string",
              "null"
            ]
          },
          "symbol": {
            "description": "Ticker symbol.",
            "type": "string"
          },
          "type": {
            "description": "Security type, for example CS (common stock), ETF, ADRC, PFD, WARRANT.",
            "type": [
              "string",
              "null"
            ]
          },
          "updated_timestamp": {
            "description": "Time the reference record was last updated. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": [
              "integer",
              "null"
            ]
          }
        },
        "required": [
          "symbol",
          "name",
          "market",
          "locale",
          "primary_exchange",
          "type",
          "active",
          "currency",
          "cik",
          "composite_figi",
          "share_class_figi",
          "updated_timestamp",
          "delisted_timestamp"
        ],
        "type": "object"
      },
      "StocksTradesRow": {
        "additionalProperties": false,
        "description": "One consolidated trade.",
        "properties": {
          "conditions": {
            "description": "Trade condition codes; see /v1/stocks/conditions.",
            "items": {
              "description": "Condition code.",
              "type": "integer"
            },
            "type": "array"
          },
          "correction": {
            "description": "Correction indicator (1, 8, 10 or 12) when the print was corrected or cancelled; null for a regular trade.",
            "type": [
              "integer",
              "null"
            ]
          },
          "exchange": {
            "description": "Numeric id of the reporting venue; see /v1/stocks/exchanges. 4 is a trade reporting facility (off-exchange).",
            "type": "integer"
          },
          "notional": {
            "description": "Price times size, in dollars.",
            "type": "number"
          },
          "off_exchange": {
            "description": "The trade was reported through a FINRA trade reporting facility (exchange id 4), the way dark pool and internalized trades are.",
            "type": "boolean"
          },
          "participant_timestamp": {
            "description": "Time the exchange or facility stamped the trade. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": [
              "integer",
              "null"
            ]
          },
          "price": {
            "description": "Trade price.",
            "type": "number"
          },
          "sequence_number": {
            "description": "Consolidated sequence number; increases within a trading day and breaks ties between trades in the same millisecond.",
            "type": "integer"
          },
          "size": {
            "description": "Trade size in shares, fractional shares included.",
            "type": "number"
          },
          "symbol": {
            "description": "Ticker symbol.",
            "type": "string"
          },
          "tape": {
            "description": "Consolidated tape: 1 NYSE listed, 2 NYSE American and Arca listed, 3 Nasdaq listed.",
            "type": [
              "integer",
              "null"
            ]
          },
          "timestamp": {
            "description": "Time the consolidated feed stamped the trade. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": "integer"
          },
          "timestamp_ns": {
            "description": "The same time in nanoseconds, as a string because it exceeds 2^53; orders trades exactly.",
            "type": "string"
          },
          "trade_id": {
            "description": "Trade id, unique per symbol, exchange and facility.",
            "type": "string"
          },
          "trf_id": {
            "description": "Trade reporting facility that received an off-exchange report: 201 FINRA/NYSE TRF, 202 FINRA/Nasdaq TRF Carteret, 203 FINRA/Nasdaq TRF Chicago.",
            "type": [
              "integer",
              "null"
            ]
          },
          "trf_timestamp": {
            "description": "Time the facility received the report. Unix epoch milliseconds (UTC).",
            "format": "unix-ms",
            "type": [
              "integer",
              "null"
            ]
          }
        },
        "required": [
          "symbol",
          "price",
          "size",
          "notional",
          "exchange",
          "off_exchange",
          "tape",
          "conditions",
          "correction",
          "trade_id",
          "sequence_number",
          "timestamp",
          "timestamp_ns",
          "participant_timestamp",
          "trf_id",
          "trf_timestamp"
        ],
        "type": "object"
      }
    },
    "securitySchemes": {
      "ApiKeyAuth": {
        "description": "Developer key sent as X-API-Key: om_... Keys in the query string are rejected.",
        "in": "header",
        "name": "X-API-Key",
        "type": "apiKey"
      },
      "BearerAuth": {
        "bearerFormat": "om_ API key",
        "description": "Developer key sent as Authorization: Bearer om_...",
        "scheme": "bearer",
        "type": "http"
      }
    }
  },
  "info": {
    "description": "Read-only market data over GET requests with query-string parameters.\n\nAuthentication: send your developer key as \"Authorization: Bearer om_...\" or \"X-API-Key: om_...\". Keys in the query string are rejected with 400 api_key_in_query.\n\nTimestamps: every timestamp input and output is a Unix epoch millisecond integer (UTC). start_time is inclusive and end_time exclusive. Dates are YYYY-MM-DD exchange-local calendar dates. Native 64-bit ticks and sequence numbers that can exceed 2^53 are strings.\n\nResponses: {\"data\", \"meta\", \"pagination\"?}. Missing values are null, never 0. meta.source names the venue or feed: opra, cme, cbot, nymex, comex, sip, finra_trf, index_feed or derived.\n\nPagination: pass limit and the cursor_id returned as pagination.next_cursor_id (or follow pagination.next_url). A cursor is bound to your account, the route and the query, and expires after 24 hours.\n\nRate limits: per account, 250 requests per rolling minute and 30 per rolling second, across all keys, REST, MCP and exports. Every response carries X-RateLimit-* headers; 429 responses add Retry-After and retry_after_ms.\n\nErrors: {\"error\": {\"code\", \"message\", \"request_id\", \"retry_after_ms\"?, \"details\"?}} with the HTTP status of the failure.",
    "title": "OrderMap Developer API",
    "version": "1.0.0"
  },
  "openapi": "3.1.0",
  "paths": {
    "/mcp": {
      "post": {
        "description": "Streamable HTTP MCP server (stateless, JSON responses): send one JSON-RPC 2.0 message per request with the same developer key as REST (Accept must list application/json and text/event-stream), and discover tools with tools/list. There is one read-only tool per major data endpoint, named after it (options_flow_stats for /v1/options/flow/stats); its arguments are the endpoint's query parameters and its result is the endpoint's response envelope as structured content. Each request, including every tools/call, counts as one request against the account rate limit; JSON-RPC batches are rejected. A failed call is a tool error holding the API error object.",
        "operationId": "mcp",
        "requestBody": {
          "content": {
            "application/json": {
              "schema": {
                "additionalProperties": true,
                "description": "A JSON-RPC 2.0 request or notification.",
                "type": "object"
              }
            }
          },
          "required": true
        },
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "type": "object"
                }
              }
            },
            "description": "The JSON-RPC response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "202": {
            "description": "A notification was accepted."
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "A JSON-RPC batch or an unreadable message."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          }
        },
        "summary": "Model Context Protocol endpoint.",
        "tags": [
          "mcp"
        ]
      }
    },
    "/v1/account": {
      "get": {
        "description": "Reports the plan of the calling key, the dataset releases and history window it may read, and the account-wide rate limits.",
        "operationId": "accountInfo",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/AccountInfoRow"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Your plan, entitlements and rate limits.",
        "tags": [
          "account"
        ],
        "x-dataset": "none"
      }
    },
    "/v1/account/limits": {
      "get": {
        "description": "The same values the X-RateLimit-* headers report, without spending extra budget beyond this request.",
        "operationId": "accountLimits",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/AccountLimitsRow"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Live state of your rate-limit windows.",
        "tags": [
          "account"
        ],
        "x-dataset": "none"
      }
    },
    "/v1/account/requests": {
      "get": {
        "description": "The account's own request log, newest first, for the last seven days: every REST call, MCP call, export call and WebSocket connection made with any of its keys. Only the calling account's requests are ever returned. query has credential-like parameters removed. This call appears in the log after it completes. meta.coverage.durable is false when the log is held in memory only and resets on a restart.",
        "operationId": "accountRequests",
        "parameters": [
          {
            "description": "Only requests at or after this time. Defaults to the start of the 7-day retention window.",
            "in": "query",
            "name": "start_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "Only requests before this time. Defaults to now.",
            "in": "query",
            "name": "end_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "Only responses with this HTTP status (for example 429) or class of statuses (2xx, 3xx, 4xx or 5xx).",
            "in": "query",
            "name": "status",
            "required": false,
            "schema": {
              "maxLength": 3,
              "pattern": "^([1-5][0-9]{2}|[1-5][xX]{2})$",
              "type": "string"
            }
          },
          {
            "description": "Only requests to this route template, for example /v1/options/flow.",
            "in": "query",
            "name": "route",
            "required": false,
            "schema": {
              "maxLength": 200,
              "pattern": "^/[A-Za-z0-9/_{}*.-]{0,199}$",
              "type": "string"
            }
          },
          {
            "description": "Maximum rows to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 100,
              "maximum": 500,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Opaque cursor returned as pagination.next_cursor_id; resumes the same query on the next page.",
            "in": "query",
            "name": "cursor_id",
            "required": false,
            "schema": {
              "maxLength": 1024,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "bytes_out": 18234,
                      "client_ip": "203.0.113.7",
                      "duration_ms": 41.2,
                      "error_code": null,
                      "key_prefix": "om_abcd1234",
                      "method": "GET",
                      "path": "/v1/options/flow",
                      "query": "underlying_symbol=SPX&limit=100",
                      "request_id": "0199f3c2-5b1e-7a40-9d3c-2f6b8e1a4c70",
                      "route": "/v1/options/flow",
                      "rows": 100,
                      "status": 200,
                      "timestamp": 1760659200123,
                      "user_agent": "curl/8.7.1",
                      "ws_bytes_out": null,
                      "ws_close_code": null,
                      "ws_duration_ms": null,
                      "ws_event_type": null,
                      "ws_messages_out": null
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "derived"
                  },
                  "pagination": {
                    "count": 1,
                    "has_more": false,
                    "limit": 100,
                    "next_cursor_id": null,
                    "next_url": null
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/AccountRequestsRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "required": [
                    "data",
                    "meta",
                    "pagination"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Your recent requests.",
        "tags": [
          "account"
        ],
        "x-dataset": "none",
        "x-paginated": true
      }
    },
    "/v1/account/usage": {
      "get": {
        "description": "Counts of the account's own requests per hour or day for the last seven days, from the request log: all keys and projects of the account, every REST call, MCP call, export call and WebSocket upgrade. errors are responses with status 500 and above, client_errors 400 to 499, rate_limited 429. Buckets are aligned to UTC hours or days and empty buckets are present. There are no credits; usage is limited only by the account rate limits (GET /v1/account/limits). meta.coverage.durable is false when the log is held in memory only and resets on a restart.",
        "operationId": "accountUsage",
        "parameters": [
          {
            "description": "Start of the range (inclusive). Defaults to 24 hours before end_time for hourly buckets and 7 days for daily buckets; earlier than 7 days back is raised to the retention window.",
            "in": "query",
            "name": "start_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "End of the range (exclusive). Defaults to now.",
            "in": "query",
            "name": "end_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "Bucket size.",
            "in": "query",
            "name": "granularity",
            "required": false,
            "schema": {
              "default": "hour",
              "enum": [
                "hour",
                "day"
              ],
              "type": "string"
            }
          },
          {
            "description": "Add the per-route breakdown to every bucket.",
            "in": "query",
            "name": "by_route",
            "required": false,
            "schema": {
              "default": false,
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "bytes_out": 5230112,
                      "client_errors": 3,
                      "end_time": 1760662800000,
                      "errors": 0,
                      "rate_limited": 1,
                      "requests": 412,
                      "start_time": 1760659200000
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "derived"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/AccountUsageRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Your request counts over time.",
        "tags": [
          "account"
        ],
        "x-dataset": "none"
      }
    },
    "/v1/catalog": {
      "get": {
        "description": "Every route with its parameters, dataset, pagination and streaming support.",
        "operationId": "platformCatalog",
        "parameters": [
          {
            "description": "Only routes of this family.",
            "in": "query",
            "name": "family",
            "required": false,
            "schema": {
              "enum": [
                "options",
                "futures",
                "indices",
                "stocks",
                "market",
                "account"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/PlatformCatalogRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "The endpoint catalog.",
        "tags": [
          "account"
        ],
        "x-dataset": "none"
      }
    },
    "/v1/exports": {
      "post": {
        "description": "Queues a file export of any data endpoint of the catalog (GET /v1/catalog): send its path and the query you would send to it. The query is validated by the endpoint's own parameter rules before the job is accepted (400 with details otherwise). A background worker then runs the endpoint and follows its pages until the data ends, writing one JSON file {data, meta, pages, truncated}. On a paginated endpoint limit is the maximum number of rows in the file (up to 100,000) rather than a page size; cursor_id is not accepted. The file holds at most 100,000 rows and 64 MiB; truncated is true when the data was cut at a limit. Poll GET /v1/exports/{id} until status is ready, then download from download_url. Creating, polling and downloading count against the account rate limit like any request; the job itself runs in the background and does not hold request capacity. Platform and account endpoints cannot be exported. At most 5 exports can be queued or running per account at once (429 export_limit).",
        "operationId": "exportsCreate",
        "requestBody": {
          "content": {
            "application/json": {
              "example": {
                "path": "/v1/options/trades",
                "query": {
                  "date": "2026-10-16",
                  "limit": 5000,
                  "underlying_symbol": "SPXW"
                }
              },
              "schema": {
                "$ref": "#/components/schemas/ExportRequest"
              }
            }
          },
          "required": true
        },
        "responses": {
          "202": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExportResponse"
                }
              }
            },
            "description": "The export was accepted.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid body, a path that is not an exportable catalog endpoint, or a query the endpoint rejects (details name each parameter)."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this export."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Exports are temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          }
        },
        "summary": "Create an export job.",
        "tags": [
          "exports"
        ]
      }
    },
    "/v1/exports/{id}": {
      "get": {
        "operationId": "exportsGet",
        "parameters": [
          {
            "description": "Export id returned when the export was created.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "maxLength": 64,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExportResponse"
                }
              }
            },
            "description": "The export and its state.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "No such export for this account."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          }
        },
        "summary": "Read an export job.",
        "tags": [
          "exports"
        ]
      }
    },
    "/v1/exports/{id}/download": {
      "get": {
        "description": "The export file: a JSON document {data, meta, pages, truncated} of up to 64 MiB, with data as one array (or object) holding every row of every page.",
        "operationId": "exportsDownload",
        "parameters": [
          {
            "description": "Export id returned when the export was created.",
            "in": "path",
            "name": "id",
            "required": true,
            "schema": {
              "maxLength": 64,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/ExportFile"
                }
              }
            },
            "description": "The export file.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "404": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The export does not exist or is not ready (export_not_ready)."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          }
        },
        "summary": "Download a finished export.",
        "tags": [
          "exports"
        ]
      }
    },
    "/v1/futures/bars": {
      "get": {
        "description": "Bars from one-minute history coarsened to 1m, 2m, 3m, 5m, 10m, 15m, 30m, 1h, or built per trading session for 1d (a daily bar covers the Globex session that starts at 18:00 Eastern Time the evening before its trading_date; a request returns the sessions that overlap the range, at most 22 per page). start_time is inclusive and end_time exclusive on bar starts; end_time defaults to now and start_time to 24 hours before it (30 days for 1d, or your plan's history depth when shorter). Bars are available for the most recent 90 days. A bar is complete once all of its minutes have been received; the last bar of a live range is still forming. History for a range is loaded on first use: the route answers 503 data_pending with Retry-After and succeeds when you retry. Page with cursor_id; the contract resolved on the first page is kept for the following pages.",
        "operationId": "futuresBars",
        "parameters": [
          {
            "description": "Futures product root, for example ES, NQ, CL or GC. Without contract the current front month is used and returned in the response.",
            "in": "query",
            "name": "symbol",
            "required": false,
            "schema": {
              "maxLength": 3,
              "pattern": "^[A-Za-z0-9]{1,3}$",
              "type": "string"
            }
          },
          {
            "description": "Exact dated contract: root, month code and year, for example ESZ6 (December 2026). Two-digit years are accepted and returned in the one-digit form (ESZ26 is ESZ6). Only the front month and the contracts listed by /v1/futures/contracts are served.",
            "in": "query",
            "name": "contract",
            "required": false,
            "schema": {
              "maxLength": 6,
              "pattern": "^[A-Za-z0-9]{1,3}[FGHJKMNQUVXZfghjkmnquvxz][0-9]{1,2}$",
              "type": "string"
            }
          },
          {
            "description": "Bar size.",
            "in": "query",
            "name": "interval",
            "required": false,
            "schema": {
              "default": "1m",
              "enum": [
                "1m",
                "2m",
                "3m",
                "5m",
                "10m",
                "15m",
                "30m",
                "1h",
                "1d"
              ],
              "type": "string"
            }
          },
          {
            "description": "First bar start to return (inclusive).",
            "in": "query",
            "name": "start_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "End of the range (exclusive).",
            "in": "query",
            "name": "end_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "Maximum rows to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 1000,
              "maximum": 5000,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Opaque cursor returned as pagination.next_cursor_id; resumes the same query on the next page.",
            "in": "query",
            "name": "cursor_id",
            "required": false,
            "schema": {
              "maxLength": 1024,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "close": 6021.5,
                      "complete": true,
                      "contract": "ESZ6",
                      "high": 6022,
                      "low": 6019.75,
                      "open": 6020.25,
                      "start_time": 1792159200000,
                      "trading_date": null,
                      "volume": 4821
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "cme"
                  },
                  "pagination": {
                    "count": 1,
                    "has_more": false,
                    "limit": 1000,
                    "next_cursor_id": null,
                    "next_url": null
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/FuturesBarsRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "required": [
                    "data",
                    "meta",
                    "pagination"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "OHLCV bars of a futures contract, one minute to one day.",
        "tags": [
          "futures"
        ],
        "x-dataset": "futures",
        "x-history-params": [
          "start_time",
          "end_time"
        ],
        "x-mcp": true,
        "x-paginated": true
      }
    },
    "/v1/futures/book": {
      "get": {
        "description": "The synchronized order book as displayed: aggregated size and order count per price level, best price first, with the book sequence. Only the live book exists; there is no historical book on this route (see /v1/futures/liquidity-heatmap for history). levels limits the depth per side.",
        "operationId": "futuresBook",
        "parameters": [
          {
            "description": "Futures product root, for example ES, NQ, CL or GC. Without contract the current front month is used and returned in the response.",
            "in": "query",
            "name": "symbol",
            "required": false,
            "schema": {
              "maxLength": 3,
              "pattern": "^[A-Za-z0-9]{1,3}$",
              "type": "string"
            }
          },
          {
            "description": "Exact dated contract: root, month code and year, for example ESZ6 (December 2026). Two-digit years are accepted and returned in the one-digit form (ESZ26 is ESZ6). Only the front month and the contracts listed by /v1/futures/contracts are served.",
            "in": "query",
            "name": "contract",
            "required": false,
            "schema": {
              "maxLength": 6,
              "pattern": "^[A-Za-z0-9]{1,3}[FGHJKMNQUVXZfghjkmnquvxz][0-9]{1,2}$",
              "type": "string"
            }
          },
          {
            "description": "Price levels to return per side.",
            "in": "query",
            "name": "levels",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 1000,
              "minimum": 1,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "ask_levels": 655,
                    "asks": [
                      {
                        "orders": 24,
                        "price": 6021.5,
                        "price_ticks": "24086",
                        "size": 96
                      }
                    ],
                    "bid_levels": 640,
                    "bids": [
                      {
                        "orders": 31,
                        "price": 6021.25,
                        "price_ticks": "24085",
                        "size": 118
                      }
                    ],
                    "contract": "ESZ6",
                    "depth_type": "by_order",
                    "sequence": "88213344",
                    "symbol": "ES",
                    "tick_size": 0.25,
                    "timestamp": 1792159200123,
                    "valid": true
                  },
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "cme"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/FuturesBookRow"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "The current displayed depth of a futures contract.",
        "tags": [
          "futures"
        ],
        "x-dataset": "futures",
        "x-streamable": true
      }
    },
    "/v1/futures/contracts": {
      "get": {
        "description": "The front month and the other dated contracts the platform knows for a root, with the contract month. For equity-index futures settlement_time is the final settlement instant: 09:30 Eastern Time on the third Friday of the contract month (the preceding business day when that is a configured holiday). The front month is resolved by the data feed; it is the contract every route returns when you give a root without a contract. Only contracts the platform captures carry live and retained data.",
        "operationId": "futuresContracts",
        "parameters": [
          {
            "description": "Futures product root, for example ES.",
            "in": "query",
            "name": "symbol",
            "required": true,
            "schema": {
              "maxLength": 3,
              "pattern": "^[A-Za-z0-9]{1,3}$",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "contract": "ESZ6",
                      "contract_month": "2026-12",
                      "exchange": "cme",
                      "is_front": true,
                      "month_code": "Z",
                      "settlement_time": 1797604200000,
                      "symbol": "ES"
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "cme"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/FuturesContractsRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Dated contracts of a futures product, front month first.",
        "tags": [
          "futures"
        ],
        "x-dataset": "futures"
      }
    },
    "/v1/futures/cvd": {
      "get": {
        "description": "Running total of buy volume minus sell volume, one point per print, over a trading session; prints with an unknown side are not counted. The series starts at zero at the start of the selected window. A window of more than 10,000 prints is refused with 413 range_too_large: narrow start_time and end_time. Reads the live capture; a window it no longer holds answers 422 data_unavailable. Stored futures data covers the current Globex session (18:00–17:00 America/New_York), or the last completed session while the market is closed. Flow resets at each new session; Friday's session remains available until Sunday 18:00 ET. Requests cover at most 24 hours; older sessions are unavailable through this route. Coverage may be partial.",
        "operationId": "futuresCvd",
        "parameters": [
          {
            "description": "Futures product root, for example ES, NQ, CL or GC. Without contract the current front month is used and returned in the response.",
            "in": "query",
            "name": "symbol",
            "required": false,
            "schema": {
              "maxLength": 3,
              "pattern": "^[A-Za-z0-9]{1,3}$",
              "type": "string"
            }
          },
          {
            "description": "Exact dated contract: root, month code and year, for example ESZ6 (December 2026). Two-digit years are accepted and returned in the one-digit form (ESZ26 is ESZ6). Only the front month and the contracts listed by /v1/futures/contracts are served.",
            "in": "query",
            "name": "contract",
            "required": false,
            "schema": {
              "maxLength": 6,
              "pattern": "^[A-Za-z0-9]{1,3}[FGHJKMNQUVXZfghjkmnquvxz][0-9]{1,2}$",
              "type": "string"
            }
          },
          {
            "description": "Trading session to read. rth is 09:30 to 16:00 Eastern Time; globex the full 18:00 to 17:00 session; gth the overnight window (20:15 to 09:25); curb 16:15 to 17:00; combined gth plus rth. Futures trade through the night, so every session is available on every plan.",
            "in": "query",
            "name": "session",
            "required": false,
            "schema": {
              "default": "rth",
              "enum": [
                "rth",
                "globex",
                "gth",
                "curb",
                "combined"
              ],
              "type": "string"
            }
          },
          {
            "description": "Trading date (YYYY-MM-DD) of the session; default the current or most recent one.",
            "in": "query",
            "name": "date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Narrow the session to start at or after this time.",
            "in": "query",
            "name": "start_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "Narrow the session to end at or before this time.",
            "in": "query",
            "name": "end_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "contract": "ESZ6",
                      "timestamp": 1792159200123,
                      "value": 1842
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "cme"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/FuturesCvdRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Cumulative volume delta of a futures session.",
        "tags": [
          "futures"
        ],
        "x-dataset": "futures",
        "x-history-params": [
          "start_time",
          "end_time",
          "date"
        ],
        "x-stored-session-notice": "Stored futures data covers the current Globex session (18:00–17:00 America/New_York), or the last completed session while the market is closed. Flow resets at each new session; Friday's session remains available until Sunday 18:00 ET. Requests cover at most 24 hours; older sessions are unavailable through this route. Coverage may be partial.",
        "x-streamable": true
      }
    },
    "/v1/futures/delta-bars": {
      "get": {
        "description": "One row per footprint bar with its buy, sell and unknown volume, delta (buy minus sell) and the running cumulative delta from the first returned bar. Derived from the same prints and limits as /v1/futures/footprint (live capture; at most 2,000 bars). Stored futures data covers the current Globex session (18:00–17:00 America/New_York), or the last completed session while the market is closed. Flow resets at each new session; Friday's session remains available until Sunday 18:00 ET. Requests cover at most 24 hours; older sessions are unavailable through this route. Coverage may be partial.",
        "operationId": "futuresDeltaBars",
        "parameters": [
          {
            "description": "Futures product root, for example ES, NQ, CL or GC. Without contract the current front month is used and returned in the response.",
            "in": "query",
            "name": "symbol",
            "required": false,
            "schema": {
              "maxLength": 3,
              "pattern": "^[A-Za-z0-9]{1,3}$",
              "type": "string"
            }
          },
          {
            "description": "Exact dated contract: root, month code and year, for example ESZ6 (December 2026). Two-digit years are accepted and returned in the one-digit form (ESZ26 is ESZ6). Only the front month and the contracts listed by /v1/futures/contracts are served.",
            "in": "query",
            "name": "contract",
            "required": false,
            "schema": {
              "maxLength": 6,
              "pattern": "^[A-Za-z0-9]{1,3}[FGHJKMNQUVXZfghjkmnquvxz][0-9]{1,2}$",
              "type": "string"
            }
          },
          {
            "description": "Trading session to read. rth is 09:30 to 16:00 Eastern Time; globex the full 18:00 to 17:00 session; gth the overnight window (20:15 to 09:25); curb 16:15 to 17:00; combined gth plus rth. Futures trade through the night, so every session is available on every plan.",
            "in": "query",
            "name": "session",
            "required": false,
            "schema": {
              "default": "rth",
              "enum": [
                "rth",
                "globex",
                "gth",
                "curb",
                "combined"
              ],
              "type": "string"
            }
          },
          {
            "description": "Trading date (YYYY-MM-DD) of the session; default the current or most recent one.",
            "in": "query",
            "name": "date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Narrow the session to start at or after this time.",
            "in": "query",
            "name": "start_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "Narrow the session to end at or before this time.",
            "in": "query",
            "name": "end_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "What closes a bar: time (target seconds), trade_count (target prints), volume (target contracts; a print is never split) or range (target ticks between the bar's high and low).",
            "in": "query",
            "name": "bar_type",
            "required": false,
            "schema": {
              "default": "time",
              "enum": [
                "time",
                "trade_count",
                "volume",
                "range"
              ],
              "type": "string"
            }
          },
          {
            "description": "Bar size: seconds for time bars, prints for trade_count, contracts for volume, ticks for range. Default 60 seconds, 500 prints, 1,000 contracts, 10 ticks.",
            "in": "query",
            "name": "target",
            "required": false,
            "schema": {
              "maximum": 86400,
              "minimum": 1,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "buy_volume": 2305,
                      "closed": true,
                      "contract": "ESZ6",
                      "cumulative_delta": 1631,
                      "delta": -211,
                      "end_time": 1792159260000,
                      "sell_volume": 2516,
                      "start_time": 1792159200000,
                      "trade_count": 1305,
                      "unknown_volume": 0,
                      "volume": 4821
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "cme"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/FuturesDeltaBarsRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Buy, sell and net volume per bar.",
        "tags": [
          "futures"
        ],
        "x-dataset": "futures",
        "x-history-params": [
          "start_time",
          "end_time",
          "date"
        ],
        "x-stored-session-notice": "Stored futures data covers the current Globex session (18:00–17:00 America/New_York), or the last completed session while the market is closed. Flow resets at each new session; Friday's session remains available until Sunday 18:00 ET. Requests cover at most 24 hours; older sessions are unavailable through this route. Coverage may be partial.",
        "x-streamable": true
      }
    },
    "/v1/futures/flow": {
      "get": {
        "description": "Retained prints of at least min_size contracts (default 50) whose aggressor side is known (buy or sell); ask for side=unknown to include prints without a determined side. Each row adds notional, the US dollar value of the print (price x size x point value). The window defaults to the full current session, or the last completed session while closed (at most 24 hours per request). Older sessions are unavailable; paging follows /v1/futures/trades. Stored futures data covers the current Globex session (18:00–17:00 America/New_York), or the last completed session while the market is closed. Flow resets at each new session; Friday's session remains available until Sunday 18:00 ET. Requests cover at most 24 hours; older sessions are unavailable through this route. Coverage may be partial.",
        "operationId": "futuresFlow",
        "parameters": [
          {
            "description": "Futures product root, for example ES, NQ, CL or GC. Without contract the current front month is used and returned in the response.",
            "in": "query",
            "name": "symbol",
            "required": false,
            "schema": {
              "maxLength": 3,
              "pattern": "^[A-Za-z0-9]{1,3}$",
              "type": "string"
            }
          },
          {
            "description": "Exact dated contract: root, month code and year, for example ESZ6 (December 2026). Two-digit years are accepted and returned in the one-digit form (ESZ26 is ESZ6). Only the front month and the contracts listed by /v1/futures/contracts are served.",
            "in": "query",
            "name": "contract",
            "required": false,
            "schema": {
              "maxLength": 6,
              "pattern": "^[A-Za-z0-9]{1,3}[FGHJKMNQUVXZfghjkmnquvxz][0-9]{1,2}$",
              "type": "string"
            }
          },
          {
            "description": "Start of the window (inclusive).",
            "in": "query",
            "name": "start_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "End of the window (exclusive).",
            "in": "query",
            "name": "end_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "Smallest print to report, in contracts.",
            "in": "query",
            "name": "min_size",
            "required": false,
            "schema": {
              "default": 50,
              "maximum": 1000000,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Aggressor sides to report. Default: buy and sell.",
            "explode": false,
            "in": "query",
            "name": "side",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "buy",
                  "sell",
                  "unknown"
                ],
                "type": "string"
              },
              "maxItems": 3,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Maximum rows to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 1000,
              "maximum": 5000,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Opaque cursor returned as pagination.next_cursor_id; resumes the same query on the next page.",
            "in": "query",
            "name": "cursor_id",
            "required": false,
            "schema": {
              "maxLength": 1024,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "contract": "ESZ6",
                      "id": "9f2c1d0e8a7b6c5d4e3f2a1b0c9d8e7f6a5b4c3d2e1f0a9b8c7d6e5f4a3b2c1d",
                      "notional": 36129000,
                      "price": 6021.5,
                      "price_ticks": "24086",
                      "side": "sell",
                      "size": 120,
                      "timestamp": 1792159200123
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "cme"
                  },
                  "pagination": {
                    "count": 1,
                    "has_more": false,
                    "limit": 1000,
                    "next_cursor_id": null,
                    "next_url": null
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/FuturesFlowRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "required": [
                    "data",
                    "meta",
                    "pagination"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Large and aggressive futures prints with notional value.",
        "tags": [
          "futures"
        ],
        "x-dataset": "futures",
        "x-history-params": [
          "start_time",
          "end_time"
        ],
        "x-mcp": true,
        "x-paginated": true,
        "x-stored-session-notice": "Stored futures data covers the current Globex session (18:00–17:00 America/New_York), or the last completed session while the market is closed. Flow resets at each new session; Friday's session remains available until Sunday 18:00 ET. Requests cover at most 24 hours; older sessions are unavailable through this route. Coverage may be partial."
      }
    },
    "/v1/futures/footprint": {
      "get": {
        "description": "Bars of a trading session built from prints, each with its price ladder of buy, sell and unknown volume, delta, point of control and value area, and buy/sell and stacked imbalances. Bars close by time, print count, volume or range (bar_type, target). Reads the live capture: a window it no longer holds answers 422 data_unavailable, and a window that would exceed 2,000 bars or 10,000 price rows is refused with 413 range_too_large (narrow the window or use larger bars or rows). meta.coverage.complete is false because a provider's completeness is never claimed. Stored futures data covers the current Globex session (18:00–17:00 America/New_York), or the last completed session while the market is closed. Flow resets at each new session; Friday's session remains available until Sunday 18:00 ET. Requests cover at most 24 hours; older sessions are unavailable through this route. Coverage may be partial.",
        "operationId": "futuresFootprint",
        "parameters": [
          {
            "description": "Futures product root, for example ES, NQ, CL or GC. Without contract the current front month is used and returned in the response.",
            "in": "query",
            "name": "symbol",
            "required": false,
            "schema": {
              "maxLength": 3,
              "pattern": "^[A-Za-z0-9]{1,3}$",
              "type": "string"
            }
          },
          {
            "description": "Exact dated contract: root, month code and year, for example ESZ6 (December 2026). Two-digit years are accepted and returned in the one-digit form (ESZ26 is ESZ6). Only the front month and the contracts listed by /v1/futures/contracts are served.",
            "in": "query",
            "name": "contract",
            "required": false,
            "schema": {
              "maxLength": 6,
              "pattern": "^[A-Za-z0-9]{1,3}[FGHJKMNQUVXZfghjkmnquvxz][0-9]{1,2}$",
              "type": "string"
            }
          },
          {
            "description": "Trading session to read. rth is 09:30 to 16:00 Eastern Time; globex the full 18:00 to 17:00 session; gth the overnight window (20:15 to 09:25); curb 16:15 to 17:00; combined gth plus rth. Futures trade through the night, so every session is available on every plan.",
            "in": "query",
            "name": "session",
            "required": false,
            "schema": {
              "default": "rth",
              "enum": [
                "rth",
                "globex",
                "gth",
                "curb",
                "combined"
              ],
              "type": "string"
            }
          },
          {
            "description": "Trading date (YYYY-MM-DD) of the session; default the current or most recent one.",
            "in": "query",
            "name": "date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Narrow the session to start at or after this time.",
            "in": "query",
            "name": "start_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "Narrow the session to end at or before this time.",
            "in": "query",
            "name": "end_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "What closes a bar: time (target seconds), trade_count (target prints), volume (target contracts; a print is never split) or range (target ticks between the bar's high and low).",
            "in": "query",
            "name": "bar_type",
            "required": false,
            "schema": {
              "default": "time",
              "enum": [
                "time",
                "trade_count",
                "volume",
                "range"
              ],
              "type": "string"
            }
          },
          {
            "description": "Bar size: seconds for time bars, prints for trade_count, contracts for volume, ticks for range. Default 60 seconds, 500 prints, 1,000 contracts, 10 ticks.",
            "in": "query",
            "name": "target",
            "required": false,
            "schema": {
              "maximum": 86400,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Group prices into rows of this many ticks.",
            "in": "query",
            "name": "row_ticks",
            "required": false,
            "schema": {
              "default": 1,
              "maximum": 1000,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "How imbalances compare volumes: horizontal (buy against sell at the same price) or diagonal (buy against the sell one row below).",
            "in": "query",
            "name": "imbalance_mode",
            "required": false,
            "schema": {
              "default": "horizontal",
              "enum": [
                "horizontal",
                "diagonal"
              ],
              "type": "string"
            }
          },
          {
            "description": "Ratio at which one side counts as an imbalance.",
            "in": "query",
            "name": "imbalance_ratio",
            "required": false,
            "schema": {
              "default": 3,
              "maximum": 1000,
              "minimum": 1,
              "type": "number"
            }
          },
          {
            "description": "Smallest volume that can be an imbalance.",
            "in": "query",
            "name": "imbalance_minimum",
            "required": false,
            "schema": {
              "default": 10,
              "maximum": 1000000000,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Consecutive imbalanced rows that make a stacked imbalance.",
            "in": "query",
            "name": "stacked_length",
            "required": false,
            "schema": {
              "default": 3,
              "maximum": 100,
              "minimum": 2,
              "type": "integer"
            }
          },
          {
            "description": "Share of the volume the value area contains, in percent.",
            "in": "query",
            "name": "value_area_pct",
            "required": false,
            "schema": {
              "default": 70,
              "maximum": 100,
              "minimum": 1,
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "cells": [
                        {
                          "buy_imbalance": false,
                          "buy_volume": 612,
                          "delta": -92,
                          "in_value_area": true,
                          "is_poc": true,
                          "price": 6021.5,
                          "price_ticks": "24086",
                          "sell_imbalance": false,
                          "sell_volume": 704,
                          "stacked_buy_imbalance": false,
                          "stacked_sell_imbalance": false,
                          "total_volume": 1316,
                          "trade_count": 301,
                          "unknown_volume": 0
                        }
                      ],
                      "closed": true,
                      "contract": "ESZ6",
                      "delta": -212,
                      "end_time": 1792159260000,
                      "poc": 6021.5,
                      "start_time": 1792159200000,
                      "trade_count": 1305,
                      "value_area_high": 6022,
                      "value_area_low": 6021,
                      "volume": 4821
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "cme"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/FuturesFootprintRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Footprint bars: volume by price inside each bar, with imbalances.",
        "tags": [
          "futures"
        ],
        "x-dataset": "futures",
        "x-history-params": [
          "start_time",
          "end_time",
          "date"
        ],
        "x-stored-session-notice": "Stored futures data covers the current Globex session (18:00–17:00 America/New_York), or the last completed session while the market is closed. Flow resets at each new session; Friday's session remains available until Sunday 18:00 ET. Requests cover at most 24 hours; older sessions are unavailable through this route. Coverage may be partial.",
        "x-streamable": true
      }
    },
    "/v1/futures/liquidity": {
      "get": {
        "description": "A summary of the displayed book: best bid and ask, mid, spread in price and ticks, the size at the touch, the displayed size within ticks of the touch on each side, and imbalance = (bid size - ask size) / (bid size + ask size) over that depth, between -1 and 1. Totals cover every displayed level. The summary describes displayed anonymous size only; it does not infer hidden orders.",
        "operationId": "futuresLiquidity",
        "parameters": [
          {
            "description": "Futures product root, for example ES, NQ, CL or GC. Without contract the current front month is used and returned in the response.",
            "in": "query",
            "name": "symbol",
            "required": false,
            "schema": {
              "maxLength": 3,
              "pattern": "^[A-Za-z0-9]{1,3}$",
              "type": "string"
            }
          },
          {
            "description": "Exact dated contract: root, month code and year, for example ESZ6 (December 2026). Two-digit years are accepted and returned in the one-digit form (ESZ26 is ESZ6). Only the front month and the contracts listed by /v1/futures/contracts are served.",
            "in": "query",
            "name": "contract",
            "required": false,
            "schema": {
              "maxLength": 6,
              "pattern": "^[A-Za-z0-9]{1,3}[FGHJKMNQUVXZfghjkmnquvxz][0-9]{1,2}$",
              "type": "string"
            }
          },
          {
            "description": "Depth around the touch, in ticks, for the within-depth sizes and the imbalance.",
            "in": "query",
            "name": "ticks",
            "required": false,
            "schema": {
              "default": 10,
              "maximum": 200,
              "minimum": 1,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "ask_levels": 655,
                    "ask_size_total": 40377,
                    "ask_size_touch": 96,
                    "ask_size_within": 1984,
                    "best_ask": 6021.5,
                    "best_bid": 6021.25,
                    "bid_levels": 640,
                    "bid_size_total": 41820,
                    "bid_size_touch": 118,
                    "bid_size_within": 2210,
                    "contract": "ESZ6",
                    "imbalance": 0.0539,
                    "mid": 6021.375,
                    "spread": 0.25,
                    "spread_ticks": 1,
                    "symbol": "ES",
                    "ticks": 10,
                    "timestamp": 1792159200123,
                    "valid": true
                  },
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "cme"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/FuturesLiquidityRow"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Spread and displayed liquidity of a futures contract.",
        "tags": [
          "futures"
        ],
        "x-dataset": "futures",
        "x-streamable": true
      }
    },
    "/v1/futures/liquidity-heatmap": {
      "get": {
        "description": "The displayed size resting at each price over time, reconstructed from retained depth. One request covers at most 5 minutes inside the current or last completed session and a price range you choose (price_min to price_max); columns sets the time resolution. A row is the peak displayed size observed at a price during its span; when a span is aggregated its start and end are the bin edges. coverage.unavailable_ranges lists intervals with no depth, and coverage.complete is false when the read could not cover the window. Stored futures data covers the current Globex session (18:00–17:00 America/New_York), or the last completed session while the market is closed. Flow resets at each new session; Friday's session remains available until Sunday 18:00 ET. Requests cover at most 24 hours; older sessions are unavailable through this route. Coverage may be partial.",
        "operationId": "futuresLiquidityHeatmap",
        "parameters": [
          {
            "description": "Futures product root, for example ES, NQ, CL or GC. Without contract the current front month is used and returned in the response.",
            "in": "query",
            "name": "symbol",
            "required": false,
            "schema": {
              "maxLength": 3,
              "pattern": "^[A-Za-z0-9]{1,3}$",
              "type": "string"
            }
          },
          {
            "description": "Exact dated contract: root, month code and year, for example ESZ6 (December 2026). Two-digit years are accepted and returned in the one-digit form (ESZ26 is ESZ6). Only the front month and the contracts listed by /v1/futures/contracts are served.",
            "in": "query",
            "name": "contract",
            "required": false,
            "schema": {
              "maxLength": 6,
              "pattern": "^[A-Za-z0-9]{1,3}[FGHJKMNQUVXZfghjkmnquvxz][0-9]{1,2}$",
              "type": "string"
            }
          },
          {
            "description": "Start of the slice (inclusive).",
            "in": "query",
            "name": "start_time",
            "required": true,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "End of the slice (exclusive); at most 5 minutes after start_time.",
            "in": "query",
            "name": "end_time",
            "required": true,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "Lowest price to return.",
            "in": "query",
            "name": "price_min",
            "required": true,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 100000000,
              "type": "number"
            }
          },
          {
            "description": "Highest price to return.",
            "in": "query",
            "name": "price_max",
            "required": true,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 100000000,
              "type": "number"
            }
          },
          {
            "description": "Time resolution: the number of time columns the slice is divided into.",
            "in": "query",
            "name": "columns",
            "required": false,
            "schema": {
              "default": 256,
              "maximum": 2048,
              "minimum": 64,
              "type": "integer"
            }
          },
          {
            "description": "Group prices into rows of this many ticks (a power of two).",
            "in": "query",
            "name": "row_ticks",
            "required": false,
            "schema": {
              "maximum": 65536,
              "minimum": 1,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "aggregated": false,
                      "ask_size": 0,
                      "bid_size": 118,
                      "contract": "ESZ6",
                      "end_time": 1792159201000,
                      "price": 6021.25,
                      "start_time": 1792159200000
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "cme"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/FuturesLiquidityHeatmapRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Historical displayed liquidity by price and time (up to 5 minutes).",
        "tags": [
          "futures"
        ],
        "x-dataset": "futures",
        "x-history-params": [
          "start_time",
          "end_time"
        ],
        "x-stored-session-notice": "Stored futures data covers the current Globex session (18:00–17:00 America/New_York), or the last completed session while the market is closed. Flow resets at each new session; Friday's session remains available until Sunday 18:00 ET. Requests cover at most 24 hours; older sessions are unavailable through this route. Coverage may be partial."
      }
    },
    "/v1/futures/order-flow": {
      "get": {
        "description": "The prints of a window in time order. When the window holds more than 4,000 prints, prints at the same price, side and second are grouped into one row with aggregated true; size and trade_count always add up to every print in the window, so no volume is dropped. The window defaults to the last 15 minutes and is at most 24 hours; windows beyond the live capture are read from retained history for that session. For every print use /v1/futures/trades. Stored futures data covers the current Globex session (18:00–17:00 America/New_York), or the last completed session while the market is closed. Flow resets at each new session; Friday's session remains available until Sunday 18:00 ET. Requests cover at most 24 hours; older sessions are unavailable through this route. Coverage may be partial.",
        "operationId": "futuresOrderFlow",
        "parameters": [
          {
            "description": "Futures product root, for example ES, NQ, CL or GC. Without contract the current front month is used and returned in the response.",
            "in": "query",
            "name": "symbol",
            "required": false,
            "schema": {
              "maxLength": 3,
              "pattern": "^[A-Za-z0-9]{1,3}$",
              "type": "string"
            }
          },
          {
            "description": "Exact dated contract: root, month code and year, for example ESZ6 (December 2026). Two-digit years are accepted and returned in the one-digit form (ESZ26 is ESZ6). Only the front month and the contracts listed by /v1/futures/contracts are served.",
            "in": "query",
            "name": "contract",
            "required": false,
            "schema": {
              "maxLength": 6,
              "pattern": "^[A-Za-z0-9]{1,3}[FGHJKMNQUVXZfghjkmnquvxz][0-9]{1,2}$",
              "type": "string"
            }
          },
          {
            "description": "Start of the window (inclusive).",
            "in": "query",
            "name": "start_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "End of the window (exclusive).",
            "in": "query",
            "name": "end_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "aggregated": false,
                      "contract": "ESZ6",
                      "id": "9f2c1d0e8a7b6c5d4e3f2a1b0c9d8e7f6a5b4c3d2e1f0a9b8c7d6e5f4a3b2c1d",
                      "price": 6021.5,
                      "price_ticks": "24086",
                      "side": "buy",
                      "size": 3,
                      "timestamp": 1792159200123,
                      "trade_count": 1
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "cme"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/FuturesOrderFlowRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Aggregated futures prints (order-flow bubbles) for a window.",
        "tags": [
          "futures"
        ],
        "x-dataset": "futures",
        "x-history-params": [
          "start_time",
          "end_time"
        ],
        "x-stored-session-notice": "Stored futures data covers the current Globex session (18:00–17:00 America/New_York), or the last completed session while the market is closed. Flow resets at each new session; Friday's session remains available until Sunday 18:00 ET. Requests cover at most 24 hours; older sessions are unavailable through this route. Coverage may be partial.",
        "x-streamable": true
      }
    },
    "/v1/futures/products": {
      "get": {
        "description": "The products catalog: every supported futures root with its listing exchange, tick size, point value (US dollars per one price point), quote unit, price precision and trading hours. status tells how the product is served now: active (the front contract is resolved and captured), available (activated on first use) or unavailable (outside the current data entitlement, or its feed is down). front_contract is the dated front month once it is resolved. Products whose tick depends on the contract (tick_rule contract_dependent) carry the rule in tick_notes.",
        "operationId": "futuresProducts",
        "parameters": [
          {
            "description": "Only products listed on this exchange.",
            "in": "query",
            "name": "exchange",
            "required": false,
            "schema": {
              "enum": [
                "cme",
                "cbot",
                "nymex",
                "comex"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "category": "equity_index",
                      "currency": "USD",
                      "exchange": "cme",
                      "front_contract": "ESZ6",
                      "name": "E-Mini S&P 500",
                      "point_value": 50,
                      "price_precision": 2,
                      "quote_unit": "index points",
                      "status": "active",
                      "symbol": "ES",
                      "tick_notes": null,
                      "tick_rule": "fixed",
                      "tick_size": 0.25,
                      "trading_hours": "Sunday 18:00 to Friday 17:00 ET, with a daily break from 17:00 to 18:00 ET"
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "cme"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/FuturesProductsRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Futures products with tick size, point value and exchange.",
        "tags": [
          "futures"
        ],
        "x-dataset": "futures"
      }
    },
    "/v1/futures/quotes": {
      "get": {
        "description": "The retained top of book in time order. timestamp is the time the quote was captured. One request reads at most 24 hours (default: the last hour of the current or last completed session); a start_time before that session is refused with 422 data_unavailable naming the floor. Invalid samples written when the feed disconnected are not returned. Page with cursor_id. Stored futures data covers the current Globex session (18:00–17:00 America/New_York), or the last completed session while the market is closed. Flow resets at each new session; Friday's session remains available until Sunday 18:00 ET. Requests cover at most 24 hours; older sessions are unavailable through this route. Coverage may be partial.",
        "operationId": "futuresQuotes",
        "parameters": [
          {
            "description": "Futures product root, for example ES, NQ, CL or GC. Without contract the current front month is used and returned in the response.",
            "in": "query",
            "name": "symbol",
            "required": false,
            "schema": {
              "maxLength": 3,
              "pattern": "^[A-Za-z0-9]{1,3}$",
              "type": "string"
            }
          },
          {
            "description": "Exact dated contract: root, month code and year, for example ESZ6 (December 2026). Two-digit years are accepted and returned in the one-digit form (ESZ26 is ESZ6). Only the front month and the contracts listed by /v1/futures/contracts are served.",
            "in": "query",
            "name": "contract",
            "required": false,
            "schema": {
              "maxLength": 6,
              "pattern": "^[A-Za-z0-9]{1,3}[FGHJKMNQUVXZfghjkmnquvxz][0-9]{1,2}$",
              "type": "string"
            }
          },
          {
            "description": "Start of the window (inclusive).",
            "in": "query",
            "name": "start_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "End of the window (exclusive).",
            "in": "query",
            "name": "end_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "Maximum rows to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 1000,
              "maximum": 5000,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Opaque cursor returned as pagination.next_cursor_id; resumes the same query on the next page.",
            "in": "query",
            "name": "cursor_id",
            "required": false,
            "schema": {
              "maxLength": 1024,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "ask_price": 6021.5,
                      "ask_size": 96,
                      "bid_price": 6021.25,
                      "bid_size": 118,
                      "contract": "ESZ6",
                      "id": "1792159200125000000",
                      "timestamp": 1792159200125
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "cme"
                  },
                  "pagination": {
                    "count": 1,
                    "has_more": false,
                    "limit": 1000,
                    "next_cursor_id": null,
                    "next_url": null
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/FuturesQuotesRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "required": [
                    "data",
                    "meta",
                    "pagination"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Retained best bid and ask samples of a futures contract.",
        "tags": [
          "futures"
        ],
        "x-dataset": "futures",
        "x-history-params": [
          "start_time",
          "end_time"
        ],
        "x-paginated": true,
        "x-stored-session-notice": "Stored futures data covers the current Globex session (18:00–17:00 America/New_York), or the last completed session while the market is closed. Flow resets at each new session; Friday's session remains available until Sunday 18:00 ET. Requests cover at most 24 hours; older sessions are unavailable through this route. Coverage may be partial."
      }
    },
    "/v1/futures/session-profile": {
      "get": {
        "description": "The full Globex session (18:00 Eastern Time the evening before the trading date to 17:00) built from the canonical record of prints: volume by price row, the point of control and the value area (70 % of the volume). It describes the current trading session only; date, when given, must be that session's trading date or the request answers 422 data_unavailable. While the profile is being rebuilt after a restart the route answers 503 data_pending with Retry-After. Rows are grouped automatically when the session spans more than 10,000 price rows (row_ticks in the response). Stored futures data covers the current Globex session (18:00–17:00 America/New_York), or the last completed session while the market is closed. Flow resets at each new session; Friday's session remains available until Sunday 18:00 ET. Requests cover at most 24 hours; older sessions are unavailable through this route. Coverage may be partial.",
        "operationId": "futuresSessionProfile",
        "parameters": [
          {
            "description": "Futures product root, for example ES, NQ, CL or GC. Without contract the current front month is used and returned in the response.",
            "in": "query",
            "name": "symbol",
            "required": false,
            "schema": {
              "maxLength": 3,
              "pattern": "^[A-Za-z0-9]{1,3}$",
              "type": "string"
            }
          },
          {
            "description": "Exact dated contract: root, month code and year, for example ESZ6 (December 2026). Two-digit years are accepted and returned in the one-digit form (ESZ26 is ESZ6). Only the front month and the contracts listed by /v1/futures/contracts are served.",
            "in": "query",
            "name": "contract",
            "required": false,
            "schema": {
              "maxLength": 6,
              "pattern": "^[A-Za-z0-9]{1,3}[FGHJKMNQUVXZfghjkmnquvxz][0-9]{1,2}$",
              "type": "string"
            }
          },
          {
            "description": "Trading date (YYYY-MM-DD); must be the current session's trading date.",
            "in": "query",
            "name": "date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Group prices into rows of this many ticks; omit for automatic grouping.",
            "in": "query",
            "name": "row_ticks",
            "required": false,
            "schema": {
              "maximum": 1000,
              "minimum": 1,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "contract": "ESZ6",
                    "end_time": 1792184400000,
                    "levels": [
                      {
                        "buy_volume": 18120,
                        "delta": -920,
                        "in_value_area": true,
                        "is_poc": true,
                        "price": 6021.5,
                        "price_ticks": "24086",
                        "sell_volume": 19040,
                        "total_volume": 37160,
                        "trade_count": 9010,
                        "unknown_volume": 0
                      }
                    ],
                    "poc": 6021.5,
                    "row_ticks": 1,
                    "start_time": 1792101600000,
                    "tick_size": 0.25,
                    "total_volume": 1281930,
                    "trading_date": "2026-10-16",
                    "value_area_high": 6027,
                    "value_area_low": 6014.25,
                    "value_area_pct": 70,
                    "value_area_volume": 897400
                  },
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "cme"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/FuturesSessionProfileRow"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Volume profile of the whole current trading session (POC, VAH, VAL).",
        "tags": [
          "futures"
        ],
        "x-dataset": "futures",
        "x-history-params": [
          "date"
        ],
        "x-mcp": true,
        "x-stored-session-notice": "Stored futures data covers the current Globex session (18:00–17:00 America/New_York), or the last completed session while the market is closed. Flow resets at each new session; Friday's session remains available until Sunday 18:00 ET. Requests cover at most 24 hours; older sessions are unavailable through this route. Coverage may be partial.",
        "x-streamable": true
      }
    },
    "/v1/futures/sessions": {
      "get": {
        "description": "The configured session windows of one trading date: rth (regular hours 09:30 to 16:00 Eastern Time), gth (overnight 20:15 to 09:25), curb (16:15 to 17:00) and globex (the full 18:00 to 17:00 session). start_time is inclusive and end_time exclusive. The calendar applies the weekly pattern and configured closures only; early closes are applied where configured. A weekend or closed date has no sessions and returns an empty list. date defaults to the current trading date.",
        "operationId": "futuresSessions",
        "parameters": [
          {
            "description": "Trading date (YYYY-MM-DD); default the current trading date.",
            "in": "query",
            "name": "date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "end_time": 1792180800000,
                      "session": "rth",
                      "start_time": 1792157400000,
                      "trading_date": "2026-10-16"
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "derived"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/FuturesSessionsRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Trading session windows of a trading date.",
        "tags": [
          "futures"
        ],
        "x-dataset": "none"
      }
    },
    "/v1/futures/signals": {
      "get": {
        "description": "Historical aggression signals: bursts in which one side's prints arrive much faster than the recent baseline (velocity_multiplier), in volume that one side dominates (side_dominance), found by a deterministic detector over the captured prints of the window. The detector is retrospective: it reports bursts that occurred and makes no claim about absorption or hidden orders. The window defaults to the last 15 minutes and is at most 24 hours; quality captured_partial means the captured input is not known to be complete. Every parameter after end_time tunes the detector; the defaults match the terminal's. Stored futures data covers the current Globex session (18:00–17:00 America/New_York), or the last completed session while the market is closed. Flow resets at each new session; Friday's session remains available until Sunday 18:00 ET. Requests cover at most 24 hours; older sessions are unavailable through this route. Coverage may be partial.",
        "operationId": "futuresSignals",
        "parameters": [
          {
            "description": "Futures product root, for example ES, NQ, CL or GC. Without contract the current front month is used and returned in the response.",
            "in": "query",
            "name": "symbol",
            "required": false,
            "schema": {
              "maxLength": 3,
              "pattern": "^[A-Za-z0-9]{1,3}$",
              "type": "string"
            }
          },
          {
            "description": "Exact dated contract: root, month code and year, for example ESZ6 (December 2026). Two-digit years are accepted and returned in the one-digit form (ESZ26 is ESZ6). Only the front month and the contracts listed by /v1/futures/contracts are served.",
            "in": "query",
            "name": "contract",
            "required": false,
            "schema": {
              "maxLength": 6,
              "pattern": "^[A-Za-z0-9]{1,3}[FGHJKMNQUVXZfghjkmnquvxz][0-9]{1,2}$",
              "type": "string"
            }
          },
          {
            "description": "Start of the window (inclusive).",
            "in": "query",
            "name": "start_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "End of the window (exclusive).",
            "in": "query",
            "name": "end_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "Length of the window a burst is measured over, in milliseconds.",
            "in": "query",
            "name": "window_ms",
            "required": false,
            "schema": {
              "default": 2000,
              "maximum": 10000,
              "minimum": 100,
              "type": "integer"
            }
          },
          {
            "description": "A burst ends after this long without a qualifying print, in milliseconds.",
            "in": "query",
            "name": "max_idle_ms",
            "required": false,
            "schema": {
              "default": 500,
              "maximum": 5000,
              "minimum": 10,
              "type": "integer"
            }
          },
          {
            "description": "Prints a burst needs.",
            "in": "query",
            "name": "min_executions",
            "required": false,
            "schema": {
              "default": 6,
              "maximum": 1000,
              "minimum": 2,
              "type": "integer"
            }
          },
          {
            "description": "Prints per second a burst needs.",
            "in": "query",
            "name": "min_rate",
            "required": false,
            "schema": {
              "default": 8,
              "maximum": 100000,
              "minimum": 0.1,
              "type": "number"
            }
          },
          {
            "description": "How many times the baseline rate the burst's rate must be.",
            "in": "query",
            "name": "velocity_multiplier",
            "required": false,
            "schema": {
              "default": 2.5,
              "maximum": 100,
              "minimum": 1,
              "type": "number"
            }
          },
          {
            "description": "Share of the burst's volume the aggressor side must hold, from 0.5 to 1.",
            "in": "query",
            "name": "side_dominance",
            "required": false,
            "schema": {
              "default": 0.7,
              "maximum": 1,
              "minimum": 0.5,
              "type": "number"
            }
          },
          {
            "description": "Price movement, in ticks, that starts a new burst.",
            "in": "query",
            "name": "price_ticks",
            "required": false,
            "schema": {
              "default": 2,
              "maximum": 100,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Widest price range of one burst, in ticks.",
            "in": "query",
            "name": "max_price_span_ticks",
            "required": false,
            "schema": {
              "default": 6,
              "maximum": 1000,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Window of the rate measurement, in milliseconds.",
            "in": "query",
            "name": "rate_window_ms",
            "required": false,
            "schema": {
              "default": 500,
              "maximum": 5000,
              "minimum": 50,
              "type": "integer"
            }
          },
          {
            "description": "Window of the baseline rate, in milliseconds.",
            "in": "query",
            "name": "baseline_ms",
            "required": false,
            "schema": {
              "default": 30000,
              "maximum": 300000,
              "minimum": 1000,
              "type": "integer"
            }
          },
          {
            "description": "Shortest observed history before a baseline is used, in milliseconds.",
            "in": "query",
            "name": "baseline_min_ms",
            "required": false,
            "schema": {
              "default": 2000,
              "maximum": 300000,
              "minimum": 0,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "baseline_available": true,
                      "baseline_rate": 9.4,
                      "classification": "sustained_buy_aggression",
                      "contract": "ESZ6",
                      "contracts_per_second": 158.2,
                      "end_time": 1792159201480,
                      "execution_count": 61,
                      "execution_rate": 45.1,
                      "id": "9f2c1d0e8a7b6c5d4e3f2a1b0c9d8e7f6a5b4c3d2e1f0a9b8c7d6e5f4a3b2c1d",
                      "levels": [
                        {
                          "buy_volume": 88,
                          "execution_count": 27,
                          "price": 6021.5,
                          "price_ticks": "24086",
                          "sell_volume": 4,
                          "total_volume": 92,
                          "unknown_volume": 0
                        }
                      ],
                      "price": 6021.5,
                      "price_max": 6022.25,
                      "price_min": 6021.5,
                      "price_ticks": "24086",
                      "quality": "captured_partial",
                      "side": "buy",
                      "side_dominance": 0.86,
                      "size": 214,
                      "start_time": 1792159200123,
                      "state": "completed",
                      "velocity_multiple": 4.8,
                      "vwap": 6021.8
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "cme"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/FuturesSignalsRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Bursts of one-sided aggressive trading found in captured prints.",
        "tags": [
          "futures"
        ],
        "x-dataset": "futures",
        "x-history-params": [
          "start_time",
          "end_time"
        ],
        "x-stored-session-notice": "Stored futures data covers the current Globex session (18:00–17:00 America/New_York), or the last completed session while the market is closed. Flow resets at each new session; Friday's session remains available until Sunday 18:00 ET. Requests cover at most 24 hours; older sessions are unavailable through this route. Coverage may be partial."
      }
    },
    "/v1/futures/snapshot": {
      "get": {
        "description": "The live state of one contract: the last print (price, size, aggressor side), the best bid and ask, and the open, high, low, close and volume of the current Globex session (18:00 to 17:00 Eastern Time) built from one-minute bars. Without contract the front month is used and echoed. Fields are null when nothing has been observed; coverage.session_ohlcv reports when the session bars could not be loaded.",
        "operationId": "futuresSnapshot",
        "parameters": [
          {
            "description": "Futures product root, for example ES, NQ, CL or GC. Without contract the current front month is used and returned in the response.",
            "in": "query",
            "name": "symbol",
            "required": false,
            "schema": {
              "maxLength": 3,
              "pattern": "^[A-Za-z0-9]{1,3}$",
              "type": "string"
            }
          },
          {
            "description": "Exact dated contract: root, month code and year, for example ESZ6 (December 2026). Two-digit years are accepted and returned in the one-digit form (ESZ26 is ESZ6). Only the front month and the contracts listed by /v1/futures/contracts are served.",
            "in": "query",
            "name": "contract",
            "required": false,
            "schema": {
              "maxLength": 6,
              "pattern": "^[A-Za-z0-9]{1,3}[FGHJKMNQUVXZfghjkmnquvxz][0-9]{1,2}$",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "ask_price": 6021.5,
                    "ask_size": 96,
                    "bid_price": 6021.25,
                    "bid_size": 118,
                    "contract": "ESZ6",
                    "exchange": "cme",
                    "last_price": 6021.5,
                    "last_side": "buy",
                    "last_size": 3,
                    "last_timestamp": 1792159200123,
                    "quote_timestamp": 1792159200125,
                    "session_close": 6021.5,
                    "session_high": 6030,
                    "session_low": 6004.5,
                    "session_open": 6008.75,
                    "session_start_time": 1792101600000,
                    "session_volume": 412837,
                    "symbol": "ES",
                    "tick_size": 0.25
                  },
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "cme"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/FuturesSnapshotRow"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Last trade, top of book and session OHLCV of a futures contract.",
        "tags": [
          "futures"
        ],
        "x-dataset": "futures",
        "x-mcp": true,
        "x-streamable": true
      }
    },
    "/v1/futures/trades": {
      "get": {
        "description": "Every retained print of a contract in time order with price, size and aggressor side (buy, sell or unknown when the side could not be determined). One request reads at most 24 hours; the window defaults to the last hour of the current or last completed session. A start_time before that session is refused with 422 data_unavailable naming the session floor. Rows are ordered by time and then by id, and paging with cursor_id neither repeats nor skips a print, however many share a timestamp. Filters apply before paging: a page can hold fewer than limit rows while more remain (pagination.has_more). Stored futures data covers the current Globex session (18:00–17:00 America/New_York), or the last completed session while the market is closed. Flow resets at each new session; Friday's session remains available until Sunday 18:00 ET. Requests cover at most 24 hours; older sessions are unavailable through this route. Coverage may be partial.",
        "operationId": "futuresTrades",
        "parameters": [
          {
            "description": "Futures product root, for example ES, NQ, CL or GC. Without contract the current front month is used and returned in the response.",
            "in": "query",
            "name": "symbol",
            "required": false,
            "schema": {
              "maxLength": 3,
              "pattern": "^[A-Za-z0-9]{1,3}$",
              "type": "string"
            }
          },
          {
            "description": "Exact dated contract: root, month code and year, for example ESZ6 (December 2026). Two-digit years are accepted and returned in the one-digit form (ESZ26 is ESZ6). Only the front month and the contracts listed by /v1/futures/contracts are served.",
            "in": "query",
            "name": "contract",
            "required": false,
            "schema": {
              "maxLength": 6,
              "pattern": "^[A-Za-z0-9]{1,3}[FGHJKMNQUVXZfghjkmnquvxz][0-9]{1,2}$",
              "type": "string"
            }
          },
          {
            "description": "Start of the window (inclusive).",
            "in": "query",
            "name": "start_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "End of the window (exclusive).",
            "in": "query",
            "name": "end_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "Only prints of at least this many contracts.",
            "in": "query",
            "name": "min_size",
            "required": false,
            "schema": {
              "maximum": 1000000,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Only prints with these aggressor sides.",
            "explode": false,
            "in": "query",
            "name": "side",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "buy",
                  "sell",
                  "unknown"
                ],
                "type": "string"
              },
              "maxItems": 3,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Maximum rows to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 1000,
              "maximum": 5000,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Opaque cursor returned as pagination.next_cursor_id; resumes the same query on the next page.",
            "in": "query",
            "name": "cursor_id",
            "required": false,
            "schema": {
              "maxLength": 1024,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "contract": "ESZ6",
                      "id": "9f2c1d0e8a7b6c5d4e3f2a1b0c9d8e7f6a5b4c3d2e1f0a9b8c7d6e5f4a3b2c1d",
                      "price": 6021.5,
                      "price_ticks": "24086",
                      "side": "buy",
                      "size": 3,
                      "timestamp": 1792159200123
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "cme"
                  },
                  "pagination": {
                    "count": 1,
                    "has_more": false,
                    "limit": 1000,
                    "next_cursor_id": null,
                    "next_url": null
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/FuturesTradesRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "required": [
                    "data",
                    "meta",
                    "pagination"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Retained trade prints of a futures contract.",
        "tags": [
          "futures"
        ],
        "x-dataset": "futures",
        "x-history-params": [
          "start_time",
          "end_time"
        ],
        "x-paginated": true,
        "x-stored-session-notice": "Stored futures data covers the current Globex session (18:00–17:00 America/New_York), or the last completed session while the market is closed. Flow resets at each new session; Friday's session remains available until Sunday 18:00 ET. Requests cover at most 24 hours; older sessions are unavailable through this route. Coverage may be partial."
      }
    },
    "/v1/futures/volume-profile": {
      "get": {
        "description": "The volume profile of a trading session or of a narrowed window: buy, sell and unknown volume at each price row, the point of control (the busiest row; the lowest price on a tie) and the value area, which grows outward from the point of control by taking the neighboring row with more volume (the lower one on a tie) until it holds value_area_pct of the volume. Reads the live capture; a window it no longer holds answers 422 data_unavailable. For the whole current session use /v1/futures/session-profile. Stored futures data covers the current Globex session (18:00–17:00 America/New_York), or the last completed session while the market is closed. Flow resets at each new session; Friday's session remains available until Sunday 18:00 ET. Requests cover at most 24 hours; older sessions are unavailable through this route. Coverage may be partial.",
        "operationId": "futuresVolumeProfile",
        "parameters": [
          {
            "description": "Futures product root, for example ES, NQ, CL or GC. Without contract the current front month is used and returned in the response.",
            "in": "query",
            "name": "symbol",
            "required": false,
            "schema": {
              "maxLength": 3,
              "pattern": "^[A-Za-z0-9]{1,3}$",
              "type": "string"
            }
          },
          {
            "description": "Exact dated contract: root, month code and year, for example ESZ6 (December 2026). Two-digit years are accepted and returned in the one-digit form (ESZ26 is ESZ6). Only the front month and the contracts listed by /v1/futures/contracts are served.",
            "in": "query",
            "name": "contract",
            "required": false,
            "schema": {
              "maxLength": 6,
              "pattern": "^[A-Za-z0-9]{1,3}[FGHJKMNQUVXZfghjkmnquvxz][0-9]{1,2}$",
              "type": "string"
            }
          },
          {
            "description": "Trading session to read. rth is 09:30 to 16:00 Eastern Time; globex the full 18:00 to 17:00 session; gth the overnight window (20:15 to 09:25); curb 16:15 to 17:00; combined gth plus rth. Futures trade through the night, so every session is available on every plan.",
            "in": "query",
            "name": "session",
            "required": false,
            "schema": {
              "default": "rth",
              "enum": [
                "rth",
                "globex",
                "gth",
                "curb",
                "combined"
              ],
              "type": "string"
            }
          },
          {
            "description": "Trading date (YYYY-MM-DD) of the session; default the current or most recent one.",
            "in": "query",
            "name": "date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Narrow the session to start at or after this time.",
            "in": "query",
            "name": "start_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "Narrow the session to end at or before this time.",
            "in": "query",
            "name": "end_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "Group prices into rows of this many ticks.",
            "in": "query",
            "name": "row_ticks",
            "required": false,
            "schema": {
              "default": 1,
              "maximum": 1000,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Share of the volume the value area contains, in percent.",
            "in": "query",
            "name": "value_area_pct",
            "required": false,
            "schema": {
              "default": 70,
              "maximum": 100,
              "minimum": 1,
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "contract": "ESZ6",
                    "levels": [
                      {
                        "buy_volume": 6120,
                        "delta": -920,
                        "in_value_area": true,
                        "is_poc": true,
                        "price": 6021.5,
                        "price_ticks": "24086",
                        "sell_volume": 7040,
                        "total_volume": 13160,
                        "trade_count": 3010,
                        "unknown_volume": 0
                      }
                    ],
                    "poc": 6021.5,
                    "row_ticks": 1,
                    "tick_size": 0.25,
                    "total_volume": 412837,
                    "value_area_high": 6025.25,
                    "value_area_low": 6016.75,
                    "value_area_pct": 70,
                    "value_area_volume": 289100
                  },
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "cme"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/FuturesVolumeProfileRow"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Volume by price for a window, with point of control and value area.",
        "tags": [
          "futures"
        ],
        "x-dataset": "futures",
        "x-history-params": [
          "start_time",
          "end_time",
          "date"
        ],
        "x-mcp": true,
        "x-stored-session-notice": "Stored futures data covers the current Globex session (18:00–17:00 America/New_York), or the last completed session while the market is closed. Flow resets at each new session; Friday's session remains available until Sunday 18:00 ET. Requests cover at most 24 hours; older sessions are unavailable through this route. Coverage may be partial.",
        "x-streamable": true
      }
    },
    "/v1/indices/bars": {
      "get": {
        "description": "Open, high, low and close of an index value series per bar (indices carry no volume). start_time is inclusive and end_time exclusive on bar starts, ascending; end_time defaults to now and start_time to 7 days before it (a year for 1d, 1w and 1mo, or your plan's history depth when shorter). Only completed bars are returned and a bar exists only where the index printed. Intraday intervals are aligned to the clock; 1d, 1w and 1mo bars start at midnight Eastern Time. Page with cursor_id.",
        "operationId": "indicesBars",
        "parameters": [
          {
            "description": "Index symbol, for example SPX.",
            "in": "query",
            "name": "symbol",
            "required": true,
            "schema": {
              "maxLength": 10,
              "pattern": "^[A-Za-z][A-Za-z0-9]{0,9}$",
              "type": "string"
            }
          },
          {
            "description": "Bar size.",
            "in": "query",
            "name": "interval",
            "required": false,
            "schema": {
              "default": "1d",
              "enum": [
                "1m",
                "2m",
                "3m",
                "5m",
                "10m",
                "15m",
                "30m",
                "1h",
                "1d",
                "1w",
                "1mo"
              ],
              "type": "string"
            }
          },
          {
            "description": "First bar start to return (inclusive).",
            "in": "query",
            "name": "start_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "End of the range (exclusive).",
            "in": "query",
            "name": "end_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "Maximum rows to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 1000,
              "maximum": 5000,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Opaque cursor returned as pagination.next_cursor_id; resumes the same query on the next page.",
            "in": "query",
            "name": "cursor_id",
            "required": false,
            "schema": {
              "maxLength": 1024,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "close": 5983.2,
                      "high": 5984.1,
                      "low": 5980.75,
                      "open": 5981.4,
                      "start_time": 1792157400000,
                      "symbol": "SPX"
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "index_feed"
                  },
                  "pagination": {
                    "count": 1,
                    "has_more": false,
                    "limit": 1000,
                    "next_cursor_id": null,
                    "next_url": null
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/IndicesBarsRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "required": [
                    "data",
                    "meta",
                    "pagination"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "OHLC bars of an index, one minute to one month.",
        "tags": [
          "indices"
        ],
        "x-dataset": "indices",
        "x-history-params": [
          "start_time",
          "end_time"
        ],
        "x-mcp": true,
        "x-paginated": true
      }
    },
    "/v1/indices/basis": {
      "get": {
        "description": "For every bar in which both the cash index and its futures traded: basis = futures - index; fair_value = index x e^(r-q)T; fair_basis = fair_value - index; premium = futures - fair_value (equal to basis - fair_basis) in points and basis points of the index; implied_index_price = futures x e^-(r-q)T; index_minus_implied = index - implied_index_price. state is index_above_implied or index_below_implied when the index is more than 0.25 points (configurable) away from the implied index, else at_fair. r is the configured risk-free rate (otherwise the model's SOFR-derived rate), q the configured dividend yield, T the time from the bar close to the contract's final settlement (09:30 Eastern Time on the third Friday of the contract month for equity-index futures); both rates are those at request time for the whole range. Prices are bar closes. Without contract the front month of the first served futures root is used, resolved at request time. Needs the futures and indices dataset releases. At most 7 days per request, the range defaults to the last 24 hours; bars exist only while the cash index prints.",
        "operationId": "indicesBasis",
        "parameters": [
          {
            "description": "Index with a futures pair, for example SPX (ES, MES), NDX (NQ, MNQ), RUT or DJI.",
            "in": "query",
            "name": "symbol",
            "required": true,
            "schema": {
              "maxLength": 10,
              "pattern": "^[A-Za-z][A-Za-z0-9]{0,9}$",
              "type": "string"
            }
          },
          {
            "description": "Exact dated futures contract of the index's futures, for example ESZ6. Default: the front month of the first futures root that is served, resolved when the request is made and returned in every row.",
            "in": "query",
            "name": "contract",
            "required": false,
            "schema": {
              "maxLength": 6,
              "pattern": "^[A-Za-z0-9]{1,3}[FGHJKMNQUVXZfghjkmnquvxz][0-9]{1,2}$",
              "type": "string"
            }
          },
          {
            "description": "Bar size.",
            "in": "query",
            "name": "interval",
            "required": false,
            "schema": {
              "default": "5m",
              "enum": [
                "1m",
                "2m",
                "3m",
                "5m",
                "10m",
                "15m",
                "30m",
                "1h"
              ],
              "type": "string"
            }
          },
          {
            "description": "First bar start to return (inclusive).",
            "in": "query",
            "name": "start_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "End of the range (exclusive); at most 7 days after start_time.",
            "in": "query",
            "name": "end_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "basis": 38.3,
                      "complete": true,
                      "contract": "ESZ6",
                      "days_to_settlement": 63.27,
                      "dividend_yield": 0.013,
                      "fair_basis": 29.19,
                      "fair_value": 6012.39,
                      "futures_price": 6021.5,
                      "implied_index_price": 5992.31,
                      "index_minus_implied": -9.11,
                      "index_price": 5983.2,
                      "premium": 9.11,
                      "premium_bps": 15.23,
                      "risk_free_rate": 0.0412,
                      "start_time": 1792157400000,
                      "state": "index_below_implied",
                      "symbol": "SPX"
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "cme"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/IndicesBasisRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Basis, fair value and premium of an index's futures, bar by bar.",
        "tags": [
          "indices"
        ],
        "x-dataset": "futures",
        "x-history-params": [
          "start_time",
          "end_time"
        ]
      }
    },
    "/v1/indices/basis/snapshot": {
      "get": {
        "description": "The live comparison of each index with the front month of its futures: the index value, the futures price (the mid of the best bid and ask when a quote under 10 seconds old exists, otherwise the last print under a minute old), fair value, implied index level, basis, premium in points and basis points, and state (index_above_implied, index_below_implied or at_fair; at_fair means within 0.25 index points, configurable). The cash index must have printed within the last minute: outside the cash session a row has available false, a reason (index_not_live, futures_stale, futures_unavailable, futures_not_entitled, rate_unavailable) and null numbers. Calculation as in /v1/indices/basis. Needs the futures and indices dataset releases.",
        "operationId": "indicesBasisSnapshot",
        "parameters": [
          {
            "description": "Indices with a futures pair, comma separated, for example SPX,NDX.",
            "explode": false,
            "in": "query",
            "name": "symbols",
            "required": true,
            "schema": {
              "items": {
                "maxLength": 128,
                "pattern": "^[A-Za-z][A-Za-z0-9]{0,9}$",
                "type": "string"
              },
              "maxItems": 10,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "available": true,
                      "basis": 38.26,
                      "contract": "ESZ6",
                      "days_to_settlement": 63.27,
                      "dividend_yield": 0.013,
                      "fair_basis": 29.28,
                      "fair_value": 6023.4,
                      "futures_ask": 6032.5,
                      "futures_bid": 6032.25,
                      "futures_last": 6032.5,
                      "futures_price": 6032.375,
                      "futures_price_type": "mid",
                      "futures_timestamp": 1792159199900,
                      "implied_index_price": 6003.1,
                      "index_minus_implied": -8.98,
                      "index_price": 5994.12,
                      "index_timestamp": 1792159199000,
                      "premium": 8.98,
                      "premium_bps": 14.98,
                      "reason": null,
                      "risk_free_rate": 0.0412,
                      "settlement_time": 1797604200000,
                      "state": "index_below_implied",
                      "symbol": "SPX",
                      "timestamp": 1792159200000
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "cme"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/IndicesBasisSnapshotRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Live basis, fair value and premium of up to 10 indices.",
        "tags": [
          "indices"
        ],
        "x-dataset": "futures",
        "x-mcp": true,
        "x-streamable": true
      }
    },
    "/v1/indices/implied-price": {
      "get": {
        "description": "What the cash index would be worth given its futures, per bar, around the clock. fair_value_implied_price is the futures price carried back to the index by cost of carry, F x e^-(r-q)T, with r the risk-free rate (the configured rate, otherwise the model's SOFR-derived rate), q the dividend yield and T the time to the contract's final settlement (09:30 Eastern Time on the third Friday of the contract month for equity-index futures). implied_price is the terminal's close-offset model for SPX and NDX: the futures price shifted by the offset between the last official cash close and the futures price at that close; it is null for other indices and where the model has no observation. index_price is the official cash value while the index prints and null otherwise. Neither implied value is an official index print. Requires the overnight entitlement (API Pro) and the futures and indices dataset releases. At most 7 days per request; the range defaults to the last 24 hours. History is available for the most recent 90 days; futures history for a range is loaded on first use (503 data_pending: retry).",
        "operationId": "indicesImpliedPrice",
        "parameters": [
          {
            "description": "Index with a futures pair, for example SPX (ES, MES), NDX (NQ, MNQ), RUT or DJI.",
            "in": "query",
            "name": "symbol",
            "required": true,
            "schema": {
              "maxLength": 10,
              "pattern": "^[A-Za-z][A-Za-z0-9]{0,9}$",
              "type": "string"
            }
          },
          {
            "description": "Exact dated futures contract of the index's futures, for example ESZ6. Default: the front month of the first futures root that is served, resolved when the request is made and returned in every row.",
            "in": "query",
            "name": "contract",
            "required": false,
            "schema": {
              "maxLength": 6,
              "pattern": "^[A-Za-z0-9]{1,3}[FGHJKMNQUVXZfghjkmnquvxz][0-9]{1,2}$",
              "type": "string"
            }
          },
          {
            "description": "Bar size.",
            "in": "query",
            "name": "interval",
            "required": false,
            "schema": {
              "default": "5m",
              "enum": [
                "1m",
                "2m",
                "3m",
                "5m",
                "10m",
                "15m",
                "30m",
                "1h"
              ],
              "type": "string"
            }
          },
          {
            "description": "First bar start to return (inclusive).",
            "in": "query",
            "name": "start_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "End of the range (exclusive); at most 7 days after start_time.",
            "in": "query",
            "name": "end_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "complete": true,
                      "contract": "ESZ6",
                      "days_to_settlement": 63.27,
                      "dividend_yield": 0.013,
                      "fair_value_implied_price": 5991.84,
                      "futures_price": 6021.5,
                      "implied_price": 5993.7,
                      "index_price": null,
                      "risk_free_rate": 0.0412,
                      "start_time": 1792101600000,
                      "symbol": "SPX"
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "cme"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/IndicesImpliedPriceRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "The index level implied by its futures, bar by bar, including off-hours.",
        "tags": [
          "indices"
        ],
        "x-dataset": "futures",
        "x-history-params": [
          "start_time",
          "end_time"
        ],
        "x-mcp": true,
        "x-overnight": true
      }
    },
    "/v1/indices/indicators/ema": {
      "get": {
        "description": "Exponential moving average of the chosen series over window values. Computed on the index's value series (indices carry no volume). Values are newest first by default (order=desc); give start_time and end_time to read a range. One request returns at most limit values; meta.coverage.truncated is true when more exist in the range.",
        "operationId": "indicesIndicatorsEma",
        "parameters": [
          {
            "description": "Index symbol, for example SPX.",
            "in": "query",
            "name": "symbol",
            "required": true,
            "schema": {
              "maxLength": 10,
              "pattern": "^[A-Za-z][A-Za-z0-9]{0,9}$",
              "type": "string"
            }
          },
          {
            "description": "Bar size the indicator is computed on (the feed computes it per time span: minute, hour, day, week or month).",
            "in": "query",
            "name": "interval",
            "required": false,
            "schema": {
              "default": "1d",
              "enum": [
                "1m",
                "1h",
                "1d",
                "1w",
                "1mo"
              ],
              "type": "string"
            }
          },
          {
            "description": "Number of values the average covers.",
            "in": "query",
            "name": "window",
            "required": false,
            "schema": {
              "default": 50,
              "maximum": 500,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Which bar value the indicator uses.",
            "in": "query",
            "name": "series_type",
            "required": false,
            "schema": {
              "default": "close",
              "enum": [
                "open",
                "high",
                "low",
                "close"
              ],
              "type": "string"
            }
          },
          {
            "description": "Earliest value to return (inclusive). Default: the start of your plan's history.",
            "in": "query",
            "name": "start_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "End of the range (exclusive).",
            "in": "query",
            "name": "end_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "Time order of the values.",
            "in": "query",
            "name": "order",
            "required": false,
            "schema": {
              "default": "desc",
              "enum": [
                "asc",
                "desc"
              ],
              "type": "string"
            }
          },
          {
            "description": "Values to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 100,
              "maximum": 1000,
              "minimum": 1,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "timestamp": 1792036800000,
                      "value": 5943.27
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "index_feed"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/IndicesIndicatorsEmaRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "EMA of an index.",
        "tags": [
          "indices"
        ],
        "x-dataset": "indices",
        "x-history-params": [
          "start_time",
          "end_time"
        ]
      }
    },
    "/v1/indices/indicators/macd": {
      "get": {
        "description": "Moving average convergence/divergence: the difference of a short and a long exponential average (value), its signal line and the histogram between them. Computed on the index's value series (indices carry no volume). Values are newest first by default (order=desc); give start_time and end_time to read a range. One request returns at most limit values; meta.coverage.truncated is true when more exist in the range.",
        "operationId": "indicesIndicatorsMacd",
        "parameters": [
          {
            "description": "Index symbol, for example SPX.",
            "in": "query",
            "name": "symbol",
            "required": true,
            "schema": {
              "maxLength": 10,
              "pattern": "^[A-Za-z][A-Za-z0-9]{0,9}$",
              "type": "string"
            }
          },
          {
            "description": "Bar size the indicator is computed on (the feed computes it per time span: minute, hour, day, week or month).",
            "in": "query",
            "name": "interval",
            "required": false,
            "schema": {
              "default": "1d",
              "enum": [
                "1m",
                "1h",
                "1d",
                "1w",
                "1mo"
              ],
              "type": "string"
            }
          },
          {
            "description": "Short exponential average length.",
            "in": "query",
            "name": "short_window",
            "required": false,
            "schema": {
              "default": 12,
              "maximum": 200,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Long exponential average length; must exceed short_window.",
            "in": "query",
            "name": "long_window",
            "required": false,
            "schema": {
              "default": 26,
              "maximum": 400,
              "minimum": 2,
              "type": "integer"
            }
          },
          {
            "description": "Signal line length.",
            "in": "query",
            "name": "signal_window",
            "required": false,
            "schema": {
              "default": 9,
              "maximum": 200,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Which bar value the indicator uses.",
            "in": "query",
            "name": "series_type",
            "required": false,
            "schema": {
              "default": "close",
              "enum": [
                "open",
                "high",
                "low",
                "close"
              ],
              "type": "string"
            }
          },
          {
            "description": "Earliest value to return (inclusive). Default: the start of your plan's history.",
            "in": "query",
            "name": "start_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "End of the range (exclusive).",
            "in": "query",
            "name": "end_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "Time order of the values.",
            "in": "query",
            "name": "order",
            "required": false,
            "schema": {
              "default": "desc",
              "enum": [
                "asc",
                "desc"
              ],
              "type": "string"
            }
          },
          {
            "description": "Values to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 100,
              "maximum": 1000,
              "minimum": 1,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "histogram": 1.55,
                      "signal": 10.86,
                      "timestamp": 1792036800000,
                      "value": 12.41
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "index_feed"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/IndicesIndicatorsMacdRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "MACD of an index.",
        "tags": [
          "indices"
        ],
        "x-dataset": "indices",
        "x-history-params": [
          "start_time",
          "end_time"
        ]
      }
    },
    "/v1/indices/indicators/rsi": {
      "get": {
        "description": "Relative strength index over window values, from 0 to 100. Computed on the index's value series (indices carry no volume). Values are newest first by default (order=desc); give start_time and end_time to read a range. One request returns at most limit values; meta.coverage.truncated is true when more exist in the range.",
        "operationId": "indicesIndicatorsRsi",
        "parameters": [
          {
            "description": "Index symbol, for example SPX.",
            "in": "query",
            "name": "symbol",
            "required": true,
            "schema": {
              "maxLength": 10,
              "pattern": "^[A-Za-z][A-Za-z0-9]{0,9}$",
              "type": "string"
            }
          },
          {
            "description": "Bar size the indicator is computed on (the feed computes it per time span: minute, hour, day, week or month).",
            "in": "query",
            "name": "interval",
            "required": false,
            "schema": {
              "default": "1d",
              "enum": [
                "1m",
                "1h",
                "1d",
                "1w",
                "1mo"
              ],
              "type": "string"
            }
          },
          {
            "description": "Number of values.",
            "in": "query",
            "name": "window",
            "required": false,
            "schema": {
              "default": 14,
              "maximum": 500,
              "minimum": 2,
              "type": "integer"
            }
          },
          {
            "description": "Which bar value the indicator uses.",
            "in": "query",
            "name": "series_type",
            "required": false,
            "schema": {
              "default": "close",
              "enum": [
                "open",
                "high",
                "low",
                "close"
              ],
              "type": "string"
            }
          },
          {
            "description": "Earliest value to return (inclusive). Default: the start of your plan's history.",
            "in": "query",
            "name": "start_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "End of the range (exclusive).",
            "in": "query",
            "name": "end_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "Time order of the values.",
            "in": "query",
            "name": "order",
            "required": false,
            "schema": {
              "default": "desc",
              "enum": [
                "asc",
                "desc"
              ],
              "type": "string"
            }
          },
          {
            "description": "Values to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 100,
              "maximum": 1000,
              "minimum": 1,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "timestamp": 1792036800000,
                      "value": 5943.27
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "index_feed"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/IndicesIndicatorsRsiRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "RSI of an index.",
        "tags": [
          "indices"
        ],
        "x-dataset": "indices",
        "x-history-params": [
          "start_time",
          "end_time"
        ]
      }
    },
    "/v1/indices/indicators/sma": {
      "get": {
        "description": "Simple moving average: the mean of the last window values of the chosen series. Computed on the index's value series (indices carry no volume). Values are newest first by default (order=desc); give start_time and end_time to read a range. One request returns at most limit values; meta.coverage.truncated is true when more exist in the range.",
        "operationId": "indicesIndicatorsSma",
        "parameters": [
          {
            "description": "Index symbol, for example SPX.",
            "in": "query",
            "name": "symbol",
            "required": true,
            "schema": {
              "maxLength": 10,
              "pattern": "^[A-Za-z][A-Za-z0-9]{0,9}$",
              "type": "string"
            }
          },
          {
            "description": "Bar size the indicator is computed on (the feed computes it per time span: minute, hour, day, week or month).",
            "in": "query",
            "name": "interval",
            "required": false,
            "schema": {
              "default": "1d",
              "enum": [
                "1m",
                "1h",
                "1d",
                "1w",
                "1mo"
              ],
              "type": "string"
            }
          },
          {
            "description": "Number of values the average covers.",
            "in": "query",
            "name": "window",
            "required": false,
            "schema": {
              "default": 50,
              "maximum": 500,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Which bar value the indicator uses.",
            "in": "query",
            "name": "series_type",
            "required": false,
            "schema": {
              "default": "close",
              "enum": [
                "open",
                "high",
                "low",
                "close"
              ],
              "type": "string"
            }
          },
          {
            "description": "Earliest value to return (inclusive). Default: the start of your plan's history.",
            "in": "query",
            "name": "start_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "End of the range (exclusive).",
            "in": "query",
            "name": "end_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "Time order of the values.",
            "in": "query",
            "name": "order",
            "required": false,
            "schema": {
              "default": "desc",
              "enum": [
                "asc",
                "desc"
              ],
              "type": "string"
            }
          },
          {
            "description": "Values to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 100,
              "maximum": 1000,
              "minimum": 1,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "timestamp": 1792036800000,
                      "value": 5943.27
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "index_feed"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/IndicesIndicatorsSmaRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "SMA of an index.",
        "tags": [
          "indices"
        ],
        "x-dataset": "indices",
        "x-history-params": [
          "start_time",
          "end_time"
        ]
      }
    },
    "/v1/indices/list": {
      "get": {
        "description": "Every index served by the /v1/indices routes, by its plain symbol (SPX, NDX, VIX; never a feed prefix). futures_roots are the futures products that settle on the index in the order the basis routes prefer them; basis_supported is true for the indices the basis routes accept. Indices carry no traded volume.",
        "operationId": "indicesList",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "basis_supported": true,
                      "category": "equity",
                      "futures_roots": [
                        "ES",
                        "MES"
                      ],
                      "name": "S&P 500 Index",
                      "symbol": "SPX"
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "derived"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/IndicesListRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "The indices the API serves.",
        "tags": [
          "indices"
        ],
        "x-dataset": "none"
      }
    },
    "/v1/indices/previous-close": {
      "get": {
        "description": "Open, high, low and close of the most recent completed trading day of an index, with its date.",
        "operationId": "indicesPreviousClose",
        "parameters": [
          {
            "description": "Index symbol, for example SPX.",
            "in": "query",
            "name": "symbol",
            "required": true,
            "schema": {
              "maxLength": 10,
              "pattern": "^[A-Za-z][A-Za-z0-9]{0,9}$",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "close": 5978.9,
                    "date": "2026-10-15",
                    "high": 5990.4,
                    "low": 5955.3,
                    "open": 5961.8,
                    "start_time": 1792036800000,
                    "symbol": "SPX"
                  },
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "index_feed"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/IndicesPreviousCloseRow"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "The previous trading day's bar of an index.",
        "tags": [
          "indices"
        ],
        "x-dataset": "indices"
      }
    },
    "/v1/indices/snapshot": {
      "get": {
        "description": "The latest value of each requested index with its session open, high, low, previous close, change and percent change, and the market status. Outside the trading session the change figures can be zero because the previous close equals the last close; use /v1/indices/previous-close for the prior day's bar. A symbol with no value is left out and listed in meta.coverage.missing_symbols. meta.delayed is true when the values are delayed.",
        "operationId": "indicesSnapshot",
        "parameters": [
          {
            "description": "Index symbols, comma separated, for example SPX,NDX,VIX.",
            "explode": false,
            "in": "query",
            "name": "symbols",
            "required": true,
            "schema": {
              "items": {
                "maxLength": 128,
                "pattern": "^[A-Za-z][A-Za-z0-9]{0,9}$",
                "type": "string"
              },
              "maxItems": 50,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "change": 15.22,
                      "change_percent": 0.2546,
                      "high": 6002.75,
                      "low": 5976.2,
                      "market_status": "open",
                      "name": "S&P 500",
                      "open": 5981.4,
                      "previous_close": 5978.9,
                      "symbol": "SPX",
                      "timestamp": 1792159200000,
                      "value": 5994.12
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "index_feed"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/IndicesSnapshotRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Current value and session range of up to 50 indices.",
        "tags": [
          "indices"
        ],
        "x-dataset": "indices",
        "x-mcp": true,
        "x-streamable": true
      }
    },
    "/v1/market/calendar": {
      "get": {
        "description": "Whether the US equity market is open on a date, closes early, or is closed (weekend or holiday), with the open and close times when it trades. Options on indexes and ETFs trade 15 minutes beyond the equity close; the overnight index session is described by /v1/options/sessions. The default is today.",
        "operationId": "marketCalendar",
        "parameters": [
          {
            "description": "Calendar date, YYYY-MM-DD; the default is today in New York.",
            "in": "query",
            "name": "date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "date": "2026-11-27",
                    "status": "early_close",
                    "open_timestamp": 1795789800000,
                    "close_timestamp": 1795802400000
                  },
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "derived"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/MarketCalendarRow"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "The equity market schedule of one date: open, early close or closed.",
        "tags": [
          "market"
        ],
        "x-dataset": "none"
      }
    },
    "/v1/market/holidays": {
      "get": {
        "description": "Full closures and early closes of the US equity markets with the date, exchange and name; early closes carry the open and close times. Only upcoming dates are listed: a past year returns an empty list with meta.coverage.complete false.",
        "operationId": "marketHolidays",
        "parameters": [
          {
            "description": "Only holidays in this calendar year.",
            "in": "query",
            "name": "year",
            "required": false,
            "schema": {
              "maximum": 2100,
              "minimum": 2000,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "close_time": 1795802400000,
                      "date": "2026-11-27",
                      "exchange": "NYSE",
                      "name": "Thanksgiving",
                      "open_time": 1795789800000,
                      "status": "early_close"
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "derived"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/MarketHolidaysRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Upcoming market closures and early closes.",
        "tags": [
          "market"
        ],
        "x-dataset": "none"
      }
    },
    "/v1/market/interest-rates": {
      "get": {
        "description": "The secured overnight financing rate (SOFR) published for each date in a range, in percent, ascending. Rates are published with a one-day lag. Select a range with start_time and end_time (at most 366 days); the default is the last 30 days.",
        "operationId": "marketInterestRates",
        "parameters": [
          {
            "description": "Start of the range, Unix epoch milliseconds, inclusive. At most 366 days.",
            "in": "query",
            "name": "start_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "End of the range, Unix epoch milliseconds, exclusive. At most 366 days.",
            "in": "query",
            "name": "end_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "date": "2026-10-14",
                      "rate_type": "sofr",
                      "rate_percent": 4.31
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "derived"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/MarketInterestRatesRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "The risk-free interest rate by date.",
        "tags": [
          "market"
        ],
        "x-dataset": "none"
      }
    },
    "/v1/market/overview": {
      "get": {
        "description": "The S&P 500, Nasdaq-100, Dow Jones Industrial Average and Russell 2000 with their change on the session, the VIX volatility index, the front contracts of the E-mini and micro equity index futures (ES, NQ, YM, RTY) and market breadth: advancing, declining and unchanged stocks with their volume for the latest completed session against the one before. Each part is bounded and cached for 2 seconds; a part that cannot be served is omitted and named in meta.coverage.missing. The index and futures parts are returned only to keys whose data releases include indices and futures; otherwise they are empty and named in meta.coverage.missing.",
        "operationId": "marketOverview",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "breadth": {
                      "advance_decline_ratio": 1.74,
                      "advancers": 3120,
                      "advancing_volume": 3100000000,
                      "date": "2026-10-15",
                      "decliners": 1790,
                      "declining_volume": 1400000000,
                      "total": 5120,
                      "total_volume": 4700000000,
                      "unchanged": 210
                    },
                    "futures": [
                      {
                        "change": 10.25,
                        "change_percent": 0.17,
                        "contract": "ESZ6",
                        "price": 6021.5,
                        "symbol": "ES",
                        "timestamp": 1792159199000
                      }
                    ],
                    "indices": [
                      {
                        "change": 21.3,
                        "change_percent": 0.35,
                        "name": "S&P 500",
                        "symbol": "SPX",
                        "timestamp": 1792159200000,
                        "value": 6021.4
                      }
                    ],
                    "volatility": {
                      "change": 1,
                      "change_percent": 6.45,
                      "name": "Cboe Volatility Index",
                      "symbol": "VIX",
                      "timestamp": 1792159200000,
                      "value": 16.5
                    }
                  },
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "sip"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/MarketOverviewRow"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "One-call picture of the market: indexes, futures, volatility and breadth.",
        "tags": [
          "market"
        ],
        "x-dataset": "equities",
        "x-mcp": true,
        "x-streamable": true
      }
    },
    "/v1/market/sessions": {
      "get": {
        "description": "The session windows of a trading date: stocks (pre_market 04:00, regular 09:30 to 16:00, after_hours until 20:00 Eastern), options (regular, overnight, curb) and futures (globex). Early-close days shorten regular and after-hours trading; weekends and market holidays have no sessions. Without asset every class is returned.",
        "operationId": "marketSessions",
        "parameters": [
          {
            "description": "Asset class: stocks, options or futures. Defaults to all.",
            "in": "query",
            "name": "asset",
            "required": false,
            "schema": {
              "enum": [
                "futures",
                "options",
                "stocks"
              ],
              "type": "string"
            }
          },
          {
            "description": "Trading date, YYYY-MM-DD. Defaults to the current exchange date.",
            "in": "query",
            "name": "date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "asset": "stocks",
                      "end_time": 1792180800000,
                      "session": "regular",
                      "start_time": 1792157400000,
                      "status": "regular",
                      "trading_date": "2026-10-16"
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "derived"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/MarketSessionsRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Trading sessions of an asset class on a date.",
        "tags": [
          "market"
        ],
        "x-dataset": "none"
      }
    },
    "/v1/market/status": {
      "get": {
        "description": "Whether the US equity market is open, closed or in extended hours, with the state of each venue group and flags for pre-market and after-hours trading, merged with the health of the platform's data areas: options, futures, stocks and indices (operational, degraded or outage). Cached for 2 seconds. Fields that could not be determined are null and meta.coverage.complete is false.",
        "operationId": "marketStatus",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "after_hours": false,
                    "components": [
                      {
                        "name": "options",
                        "status": "operational"
                      },
                      {
                        "name": "stocks",
                        "status": "operational"
                      }
                    ],
                    "early_hours": false,
                    "exchanges": {
                      "nasdaq": "open",
                      "nyse": "open",
                      "otc": "open"
                    },
                    "market": "open",
                    "server_time": 1792159200000
                  },
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "derived"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/MarketStatusRow"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Trading state of the US equity market and health of the data areas.",
        "tags": [
          "market"
        ],
        "x-dataset": "none",
        "x-mcp": true,
        "x-streamable": true
      }
    },
    "/v1/news": {
      "get": {
        "description": "News articles with title, summary, publisher, link and the tickers each concerns, newest first, paged back in time with cursor_id. Each insight gives the sentiment (positive, neutral or negative) the article carries for one ticker with the reasoning. Without symbol the market-wide feed is returned. The feed is refreshed continuously and cached for a minute; without start_time it reaches back as far as your plan's history allows.",
        "operationId": "newsArticles",
        "parameters": [
          {
            "description": "Only articles that mention this ticker symbol.",
            "in": "query",
            "name": "symbol",
            "required": false,
            "schema": {
              "maxLength": 11,
              "pattern": "^[A-Za-z]{1,6}(\\.[A-Za-z0-9]{1,4})?$",
              "type": "string"
            }
          },
          {
            "description": "Inclusive earliest publication time.",
            "in": "query",
            "name": "start_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "Exclusive latest publication time.",
            "in": "query",
            "name": "end_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "Maximum rows to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Opaque cursor returned as pagination.next_cursor_id; resumes the same query on the next page.",
            "in": "query",
            "name": "cursor_id",
            "required": false,
            "schema": {
              "maxLength": 1024,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "author": "A. Reporter",
                      "description": "The company introduced its next-generation processor.",
                      "id": "8ec638777ca03b553ae516761c2a22ba2fdd2f37befae3ab6fdab74e9e5193eb",
                      "image_url": null,
                      "insights": [
                        {
                          "reasoning": "The new chip raises expected margins.",
                          "sentiment": "positive",
                          "symbol": "AAPL"
                        }
                      ],
                      "keywords": [
                        "chips"
                      ],
                      "publisher": {
                        "homepage_url": "https://example.com",
                        "name": "Example News"
                      },
                      "symbols": [
                        "AAPL"
                      ],
                      "timestamp": 1792071000000,
                      "title": "Apple unveils new chip",
                      "url": "https://example.com/apple-chip"
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "sip"
                  },
                  "pagination": {
                    "count": 1,
                    "has_more": false,
                    "limit": 20,
                    "next_cursor_id": null,
                    "next_url": null
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/NewsArticlesRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "required": [
                    "data",
                    "meta",
                    "pagination"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "News articles, newest first. Alias of /v1/stocks/news.",
        "tags": [
          "stocks"
        ],
        "x-dataset": "equities",
        "x-history-params": [
          "start_time",
          "end_time"
        ],
        "x-paginated": true
      }
    },
    "/v1/openapi.json": {
      "get": {
        "description": "Generated from the endpoint catalog. No authentication is required.",
        "operationId": "platformOpenapi",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "schema": {
                  "additionalProperties": true,
                  "description": "OpenAPI 3.1 document.",
                  "type": "object"
                }
              }
            },
            "description": "Successful response."
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "security": [],
        "summary": "The OpenAPI 3.1 document of this API.",
        "tags": [
          "account"
        ],
        "x-dataset": "none"
      }
    },
    "/v1/options/chain": {
      "get": {
        "description": "The current state of every contract of an underlying: best bid and offer, the trading day so far (open, high, low, last, volume), open interest, Greeks and implied volatility. Greeks are computed during the regular session; a component the service cannot provide is null. Rows are ordered by date_of_expiry, strike, contract_type (call before put) and paginated with cursor_id; a page reads one expiration at a time and may hold fewer rows than limit. When no date_of_expiry is given the chain covers the expirations within max_dte days (default 30). Reads of an underlying that trades overnight (SPX, SPXW, XSP, VIX, VIXW, RUT, RUTW) outside weekday 09:30-16:15 ET, the curb session included, require the overnight entitlement; during the regular session, parts of a contract whose latest quote or trade is from the overnight session are null for plans without it (listed in meta.coverage.missing and counted in meta.coverage.withheld).",
        "operationId": "optionsChain",
        "parameters": [
          {
            "description": "Underlying: an option root (SPXW, QQQ, NDXP ...) or an index family: SPX covers the SPX and SPXW roots, NDX the NDX and NDXP roots, RUT the RUT and RUTW roots. Rows name the root of each contract.",
            "in": "query",
            "name": "underlying_symbol",
            "required": true,
            "schema": {
              "maxLength": 8,
              "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
              "type": "string"
            }
          },
          {
            "description": "Only this expiration, YYYY-MM-DD.",
            "in": "query",
            "name": "date_of_expiry",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Only calls or only puts.",
            "in": "query",
            "name": "contract_type",
            "required": false,
            "schema": {
              "enum": [
                "call",
                "put"
              ],
              "type": "string"
            }
          },
          {
            "description": "Lowest strike to return, in dollars.",
            "in": "query",
            "name": "min_strike",
            "required": false,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 99999.999,
              "type": "number"
            }
          },
          {
            "description": "Highest strike to return, in dollars.",
            "in": "query",
            "name": "max_strike",
            "required": false,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 99999.999,
              "type": "number"
            }
          },
          {
            "description": "Without date_of_expiry: include expirations up to this many days away (default 30).",
            "in": "query",
            "name": "max_dte",
            "required": false,
            "schema": {
              "maximum": 1000,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Maximum rows to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 1000,
              "maximum": 2500,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Opaque cursor returned as pagination.next_cursor_id; resumes the same query on the next page.",
            "in": "query",
            "name": "cursor_id",
            "required": false,
            "schema": {
              "maxLength": 1024,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "option_symbol": "SPXW  261016C05800000",
                      "underlying_symbol": "SPXW",
                      "date_of_expiry": "2026-10-16",
                      "strike": 5800,
                      "contract_type": "call",
                      "timestamp": 1792159198500,
                      "bid": 12.3,
                      "bid_size": 10,
                      "ask": 12.6,
                      "ask_size": 12,
                      "open": 11,
                      "high": 13,
                      "low": 10.5,
                      "close": 12.4,
                      "volume": 800,
                      "trade_count": 60,
                      "day_timestamp": 1792159140000,
                      "open_interest": 4321,
                      "delta": 0.5123,
                      "theta": -3.41,
                      "vega": 2.87,
                      "rho": 0.91,
                      "epsilon": -0.77,
                      "lambda": 48.2,
                      "gamma": 0.0042,
                      "vanna": -0.012,
                      "charm": 0.0031,
                      "vomma": 0.11,
                      "veta": 0.04,
                      "vera": 0.02,
                      "speed": -0.00001,
                      "zomma": -0.0002,
                      "color": -0.0001,
                      "ultima": -0.03,
                      "d1": 0.03,
                      "d2": 0.01,
                      "dual_delta": -0.48,
                      "dual_gamma": 0.0009,
                      "implied_volatility": 0.182,
                      "underlying_timestamp": 1792159198000,
                      "underlying_price": 5801.2
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "opra"
                  },
                  "pagination": {
                    "count": 1,
                    "has_more": false,
                    "limit": 1000,
                    "next_cursor_id": null,
                    "next_url": null
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/OptionsChainRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "required": [
                    "data",
                    "meta",
                    "pagination"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "The option chain: quotes, day statistics, open interest and Greeks of every contract.",
        "tags": [
          "options"
        ],
        "x-dataset": "options",
        "x-overnight": true,
        "x-paginated": true,
        "x-streamable": true
      }
    },
    "/v1/options/chain/eod": {
      "get": {
        "description": "The end-of-day record of every contract that existed on the date: the day's prices and volume and the closing best bid and offer. max_dte counts days from the date. The end-of-day record of a date is complete after 17:15 ET. Rows are ordered by date_of_expiry, strike, contract_type (call before put) and paginated with cursor_id; a page reads one expiration at a time and may hold fewer rows than limit. When no date_of_expiry is given the chain covers the expirations within max_dte days (default 30).",
        "operationId": "optionsChainEod",
        "parameters": [
          {
            "description": "Underlying: an option root (SPXW, QQQ, NDXP ...) or an index family: SPX covers the SPX and SPXW roots, NDX the NDX and NDXP roots, RUT the RUT and RUTW roots. Rows name the root of each contract.",
            "in": "query",
            "name": "underlying_symbol",
            "required": true,
            "schema": {
              "maxLength": 8,
              "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
              "type": "string"
            }
          },
          {
            "description": "Only this expiration, YYYY-MM-DD.",
            "in": "query",
            "name": "date_of_expiry",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Only calls or only puts.",
            "in": "query",
            "name": "contract_type",
            "required": false,
            "schema": {
              "enum": [
                "call",
                "put"
              ],
              "type": "string"
            }
          },
          {
            "description": "Lowest strike to return, in dollars.",
            "in": "query",
            "name": "min_strike",
            "required": false,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 99999.999,
              "type": "number"
            }
          },
          {
            "description": "Highest strike to return, in dollars.",
            "in": "query",
            "name": "max_strike",
            "required": false,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 99999.999,
              "type": "number"
            }
          },
          {
            "description": "Without date_of_expiry: include expirations up to this many days away (default 30).",
            "in": "query",
            "name": "max_dte",
            "required": false,
            "schema": {
              "maximum": 1000,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Trading date of the snapshot, YYYY-MM-DD.",
            "in": "query",
            "name": "date",
            "required": true,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Maximum rows to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 1000,
              "maximum": 2500,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Opaque cursor returned as pagination.next_cursor_id; resumes the same query on the next page.",
            "in": "query",
            "name": "cursor_id",
            "required": false,
            "schema": {
              "maxLength": 1024,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "option_symbol": "SPXW  261016C05800000",
                      "underlying_symbol": "SPXW",
                      "date_of_expiry": "2026-10-16",
                      "strike": 5800,
                      "contract_type": "call",
                      "trading_date": "2026-10-15",
                      "last_trade_timestamp": 1792094340000,
                      "open": 11,
                      "high": 13,
                      "low": 10.5,
                      "close": 12.4,
                      "volume": 1800,
                      "trade_count": 212,
                      "bid": 12.3,
                      "bid_size": 10,
                      "ask": 12.6,
                      "ask_size": 12
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "opra"
                  },
                  "pagination": {
                    "count": 1,
                    "has_more": false,
                    "limit": 1000,
                    "next_cursor_id": null,
                    "next_url": null
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/OptionsChainEodRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "required": [
                    "data",
                    "meta",
                    "pagination"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "End-of-day record of every contract of an underlying on a trading date.",
        "tags": [
          "options"
        ],
        "x-dataset": "options",
        "x-history-params": [
          "date"
        ],
        "x-paginated": true
      }
    },
    "/v1/options/chain/greeks": {
      "get": {
        "description": "The Greeks of every contract: first order, second order, third order or all. Greeks are computed during the regular session; outside it the values are null and meta.coverage.note says so. Rows are ordered by date_of_expiry, strike, contract_type (call before put) and paginated with cursor_id; a page reads one expiration at a time and may hold fewer rows than limit. When no date_of_expiry is given the chain covers the expirations within max_dte days (default 30). Reads of an underlying that trades overnight (SPX, SPXW, XSP, VIX, VIXW, RUT, RUTW) outside weekday 09:30-16:15 ET, the curb session included, require the overnight entitlement; during the regular session, parts of a contract whose latest quote or trade is from the overnight session are null for plans without it (listed in meta.coverage.missing and counted in meta.coverage.withheld).",
        "operationId": "optionsChainGreeks",
        "parameters": [
          {
            "description": "Underlying: an option root (SPXW, QQQ, NDXP ...) or an index family: SPX covers the SPX and SPXW roots, NDX the NDX and NDXP roots, RUT the RUT and RUTW roots. Rows name the root of each contract.",
            "in": "query",
            "name": "underlying_symbol",
            "required": true,
            "schema": {
              "maxLength": 8,
              "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
              "type": "string"
            }
          },
          {
            "description": "Only this expiration, YYYY-MM-DD.",
            "in": "query",
            "name": "date_of_expiry",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Only calls or only puts.",
            "in": "query",
            "name": "contract_type",
            "required": false,
            "schema": {
              "enum": [
                "call",
                "put"
              ],
              "type": "string"
            }
          },
          {
            "description": "Lowest strike to return, in dollars.",
            "in": "query",
            "name": "min_strike",
            "required": false,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 99999.999,
              "type": "number"
            }
          },
          {
            "description": "Highest strike to return, in dollars.",
            "in": "query",
            "name": "max_strike",
            "required": false,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 99999.999,
              "type": "number"
            }
          },
          {
            "description": "Without date_of_expiry: include expirations up to this many days away (default 30).",
            "in": "query",
            "name": "max_dte",
            "required": false,
            "schema": {
              "maximum": 1000,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Which Greeks to compute: first (delta, theta, vega, rho, epsilon, lambda), second (gamma, vanna, charm, vomma, veta), third (speed, zomma, color, ultima) or all (every Greek, including vera, d1, d2 and the dual Greeks). The Greeks of other orders are null.",
            "in": "query",
            "name": "greek_order",
            "required": false,
            "schema": {
              "default": "all",
              "enum": [
                "first",
                "second",
                "third",
                "all"
              ],
              "type": "string"
            }
          },
          {
            "description": "Maximum rows to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 1000,
              "maximum": 2500,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Opaque cursor returned as pagination.next_cursor_id; resumes the same query on the next page.",
            "in": "query",
            "name": "cursor_id",
            "required": false,
            "schema": {
              "maxLength": 1024,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "option_symbol": "SPXW  261016C05800000",
                      "underlying_symbol": "SPXW",
                      "date_of_expiry": "2026-10-16",
                      "strike": 5800,
                      "contract_type": "call",
                      "timestamp": 1792159198500,
                      "bid": 12.3,
                      "ask": 12.6,
                      "delta": 0.5123,
                      "theta": -3.41,
                      "vega": 2.87,
                      "rho": 0.91,
                      "epsilon": -0.77,
                      "lambda": 48.2,
                      "gamma": 0.0042,
                      "vanna": -0.012,
                      "charm": 0.0031,
                      "vomma": 0.11,
                      "veta": 0.04,
                      "vera": 0.02,
                      "speed": -0.00001,
                      "zomma": -0.0002,
                      "color": -0.0001,
                      "ultima": -0.03,
                      "d1": 0.03,
                      "d2": 0.01,
                      "dual_delta": -0.48,
                      "dual_gamma": 0.0009,
                      "implied_volatility": 0.182,
                      "underlying_timestamp": 1792159198000,
                      "underlying_price": 5801.2
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "opra"
                  },
                  "pagination": {
                    "count": 1,
                    "has_more": false,
                    "limit": 1000,
                    "next_cursor_id": null,
                    "next_url": null
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/OptionsChainGreeksRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "required": [
                    "data",
                    "meta",
                    "pagination"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Greeks and implied volatility of every contract of an underlying.",
        "tags": [
          "options"
        ],
        "x-dataset": "options",
        "x-overnight": true,
        "x-paginated": true
      }
    },
    "/v1/options/chain/implied-volatility": {
      "get": {
        "description": "The implied volatility of every contract with the bid, the offer and the underlying price used. Computed during the regular session; outside it the values are null. Rows are ordered by date_of_expiry, strike, contract_type (call before put) and paginated with cursor_id; a page reads one expiration at a time and may hold fewer rows than limit. When no date_of_expiry is given the chain covers the expirations within max_dte days (default 30). Reads of an underlying that trades overnight (SPX, SPXW, XSP, VIX, VIXW, RUT, RUTW) outside weekday 09:30-16:15 ET, the curb session included, require the overnight entitlement; during the regular session, parts of a contract whose latest quote or trade is from the overnight session are null for plans without it (listed in meta.coverage.missing and counted in meta.coverage.withheld).",
        "operationId": "optionsChainImpliedVolatility",
        "parameters": [
          {
            "description": "Underlying: an option root (SPXW, QQQ, NDXP ...) or an index family: SPX covers the SPX and SPXW roots, NDX the NDX and NDXP roots, RUT the RUT and RUTW roots. Rows name the root of each contract.",
            "in": "query",
            "name": "underlying_symbol",
            "required": true,
            "schema": {
              "maxLength": 8,
              "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
              "type": "string"
            }
          },
          {
            "description": "Only this expiration, YYYY-MM-DD.",
            "in": "query",
            "name": "date_of_expiry",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Only calls or only puts.",
            "in": "query",
            "name": "contract_type",
            "required": false,
            "schema": {
              "enum": [
                "call",
                "put"
              ],
              "type": "string"
            }
          },
          {
            "description": "Lowest strike to return, in dollars.",
            "in": "query",
            "name": "min_strike",
            "required": false,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 99999.999,
              "type": "number"
            }
          },
          {
            "description": "Highest strike to return, in dollars.",
            "in": "query",
            "name": "max_strike",
            "required": false,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 99999.999,
              "type": "number"
            }
          },
          {
            "description": "Without date_of_expiry: include expirations up to this many days away (default 30).",
            "in": "query",
            "name": "max_dte",
            "required": false,
            "schema": {
              "maximum": 1000,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Maximum rows to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 1000,
              "maximum": 2500,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Opaque cursor returned as pagination.next_cursor_id; resumes the same query on the next page.",
            "in": "query",
            "name": "cursor_id",
            "required": false,
            "schema": {
              "maxLength": 1024,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "option_symbol": "SPXW  261016C05800000",
                      "underlying_symbol": "SPXW",
                      "date_of_expiry": "2026-10-16",
                      "strike": 5800,
                      "contract_type": "call",
                      "timestamp": 1792159198500,
                      "bid": 12.3,
                      "ask": 12.6,
                      "implied_volatility": 0.182,
                      "underlying_timestamp": 1792159198000,
                      "underlying_price": 5801.2
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "opra"
                  },
                  "pagination": {
                    "count": 1,
                    "has_more": false,
                    "limit": 1000,
                    "next_cursor_id": null,
                    "next_url": null
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/OptionsChainImpliedVolatilityRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "required": [
                    "data",
                    "meta",
                    "pagination"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Implied volatility of every contract of an underlying.",
        "tags": [
          "options"
        ],
        "x-dataset": "options",
        "x-overnight": true,
        "x-paginated": true
      }
    },
    "/v1/options/chain/ohlc": {
      "get": {
        "description": "The current trading day of every contract: first, highest, lowest and latest trade price, volume and trade count. Prices are null for a contract that has not traded; outside market hours the values are the last session's. Rows are ordered by date_of_expiry, strike, contract_type (call before put) and paginated with cursor_id; a page reads one expiration at a time and may hold fewer rows than limit. When no date_of_expiry is given the chain covers the expirations within max_dte days (default 30). Reads of an underlying that trades overnight (SPX, SPXW, XSP, VIX, VIXW, RUT, RUTW) outside weekday 09:30-16:15 ET, the curb session included, require the overnight entitlement; during the regular session, parts of a contract whose latest quote or trade is from the overnight session are null for plans without it (listed in meta.coverage.missing and counted in meta.coverage.withheld).",
        "operationId": "optionsChainOhlc",
        "parameters": [
          {
            "description": "Underlying: an option root (SPXW, QQQ, NDXP ...) or an index family: SPX covers the SPX and SPXW roots, NDX the NDX and NDXP roots, RUT the RUT and RUTW roots. Rows name the root of each contract.",
            "in": "query",
            "name": "underlying_symbol",
            "required": true,
            "schema": {
              "maxLength": 8,
              "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
              "type": "string"
            }
          },
          {
            "description": "Only this expiration, YYYY-MM-DD.",
            "in": "query",
            "name": "date_of_expiry",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Only calls or only puts.",
            "in": "query",
            "name": "contract_type",
            "required": false,
            "schema": {
              "enum": [
                "call",
                "put"
              ],
              "type": "string"
            }
          },
          {
            "description": "Lowest strike to return, in dollars.",
            "in": "query",
            "name": "min_strike",
            "required": false,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 99999.999,
              "type": "number"
            }
          },
          {
            "description": "Highest strike to return, in dollars.",
            "in": "query",
            "name": "max_strike",
            "required": false,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 99999.999,
              "type": "number"
            }
          },
          {
            "description": "Without date_of_expiry: include expirations up to this many days away (default 30).",
            "in": "query",
            "name": "max_dte",
            "required": false,
            "schema": {
              "maximum": 1000,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Maximum rows to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 1000,
              "maximum": 2500,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Opaque cursor returned as pagination.next_cursor_id; resumes the same query on the next page.",
            "in": "query",
            "name": "cursor_id",
            "required": false,
            "schema": {
              "maxLength": 1024,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "option_symbol": "SPXW  261016C05800000",
                      "underlying_symbol": "SPXW",
                      "date_of_expiry": "2026-10-16",
                      "strike": 5800,
                      "contract_type": "call",
                      "timestamp": 1792159140000,
                      "open": 11,
                      "high": 13,
                      "low": 10.5,
                      "close": 12.4,
                      "volume": 800,
                      "trade_count": 60
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "opra"
                  },
                  "pagination": {
                    "count": 1,
                    "has_more": false,
                    "limit": 1000,
                    "next_cursor_id": null,
                    "next_url": null
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/OptionsChainOhlcRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "required": [
                    "data",
                    "meta",
                    "pagination"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Trading day so far of every contract of an underlying: open, high, low, last and volume.",
        "tags": [
          "options"
        ],
        "x-dataset": "options",
        "x-overnight": true,
        "x-paginated": true
      }
    },
    "/v1/options/chain/open-interest": {
      "get": {
        "description": "The open interest most recently published for every contract. It is published once a day, before the open, and reflects the previous session's close. Rows are ordered by date_of_expiry, strike, contract_type (call before put) and paginated with cursor_id; a page reads one expiration at a time and may hold fewer rows than limit. When no date_of_expiry is given the chain covers the expirations within max_dte days (default 30). Reads of an underlying that trades overnight (SPX, SPXW, XSP, VIX, VIXW, RUT, RUTW) outside weekday 09:30-16:15 ET, the curb session included, require the overnight entitlement; during the regular session, parts of a contract whose latest quote or trade is from the overnight session are null for plans without it (listed in meta.coverage.missing and counted in meta.coverage.withheld).",
        "operationId": "optionsChainOpenInterest",
        "parameters": [
          {
            "description": "Underlying: an option root (SPXW, QQQ, NDXP ...) or an index family: SPX covers the SPX and SPXW roots, NDX the NDX and NDXP roots, RUT the RUT and RUTW roots. Rows name the root of each contract.",
            "in": "query",
            "name": "underlying_symbol",
            "required": true,
            "schema": {
              "maxLength": 8,
              "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
              "type": "string"
            }
          },
          {
            "description": "Only this expiration, YYYY-MM-DD.",
            "in": "query",
            "name": "date_of_expiry",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Only calls or only puts.",
            "in": "query",
            "name": "contract_type",
            "required": false,
            "schema": {
              "enum": [
                "call",
                "put"
              ],
              "type": "string"
            }
          },
          {
            "description": "Lowest strike to return, in dollars.",
            "in": "query",
            "name": "min_strike",
            "required": false,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 99999.999,
              "type": "number"
            }
          },
          {
            "description": "Highest strike to return, in dollars.",
            "in": "query",
            "name": "max_strike",
            "required": false,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 99999.999,
              "type": "number"
            }
          },
          {
            "description": "Without date_of_expiry: include expirations up to this many days away (default 30).",
            "in": "query",
            "name": "max_dte",
            "required": false,
            "schema": {
              "maximum": 1000,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Maximum rows to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 1000,
              "maximum": 2500,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Opaque cursor returned as pagination.next_cursor_id; resumes the same query on the next page.",
            "in": "query",
            "name": "cursor_id",
            "required": false,
            "schema": {
              "maxLength": 1024,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "option_symbol": "SPXW  261016C05800000",
                      "underlying_symbol": "SPXW",
                      "date_of_expiry": "2026-10-16",
                      "strike": 5800,
                      "contract_type": "call",
                      "timestamp": 1792146600000,
                      "open_interest": 4321
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "opra"
                  },
                  "pagination": {
                    "count": 1,
                    "has_more": false,
                    "limit": 1000,
                    "next_cursor_id": null,
                    "next_url": null
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/OptionsChainOpenInterestRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "required": [
                    "data",
                    "meta",
                    "pagination"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Open interest of every contract of an underlying.",
        "tags": [
          "options"
        ],
        "x-dataset": "options",
        "x-overnight": true,
        "x-paginated": true
      }
    },
    "/v1/options/chain/open-interest-history": {
      "get": {
        "description": "The open interest published on the morning of a past or current trading date for every contract that existed then; it reflects the positions at the previous close. max_dte counts days from the date. Rows are ordered by date_of_expiry, strike, contract_type (call before put) and paginated with cursor_id; a page reads one expiration at a time and may hold fewer rows than limit. When no date_of_expiry is given the chain covers the expirations within max_dte days (default 30).",
        "operationId": "optionsChainOpenInterestHistory",
        "parameters": [
          {
            "description": "Underlying: an option root (SPXW, QQQ, NDXP ...) or an index family: SPX covers the SPX and SPXW roots, NDX the NDX and NDXP roots, RUT the RUT and RUTW roots. Rows name the root of each contract.",
            "in": "query",
            "name": "underlying_symbol",
            "required": true,
            "schema": {
              "maxLength": 8,
              "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
              "type": "string"
            }
          },
          {
            "description": "Only this expiration, YYYY-MM-DD.",
            "in": "query",
            "name": "date_of_expiry",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Only calls or only puts.",
            "in": "query",
            "name": "contract_type",
            "required": false,
            "schema": {
              "enum": [
                "call",
                "put"
              ],
              "type": "string"
            }
          },
          {
            "description": "Lowest strike to return, in dollars.",
            "in": "query",
            "name": "min_strike",
            "required": false,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 99999.999,
              "type": "number"
            }
          },
          {
            "description": "Highest strike to return, in dollars.",
            "in": "query",
            "name": "max_strike",
            "required": false,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 99999.999,
              "type": "number"
            }
          },
          {
            "description": "Without date_of_expiry: include expirations up to this many days away (default 30).",
            "in": "query",
            "name": "max_dte",
            "required": false,
            "schema": {
              "maximum": 1000,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Trading date of the snapshot, YYYY-MM-DD.",
            "in": "query",
            "name": "date",
            "required": true,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Maximum rows to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 1000,
              "maximum": 2500,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Opaque cursor returned as pagination.next_cursor_id; resumes the same query on the next page.",
            "in": "query",
            "name": "cursor_id",
            "required": false,
            "schema": {
              "maxLength": 1024,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "option_symbol": "SPXW  261016C05800000",
                      "underlying_symbol": "SPXW",
                      "date_of_expiry": "2026-10-16",
                      "strike": 5800,
                      "contract_type": "call",
                      "trading_date": "2026-10-16",
                      "timestamp": 1792146600000,
                      "open_interest": 4321
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "opra"
                  },
                  "pagination": {
                    "count": 1,
                    "has_more": false,
                    "limit": 1000,
                    "next_cursor_id": null,
                    "next_url": null
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/OptionsChainOpenInterestHistoryRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "required": [
                    "data",
                    "meta",
                    "pagination"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Open interest of every contract of an underlying on a trading date.",
        "tags": [
          "options"
        ],
        "x-dataset": "options",
        "x-history-params": [
          "date"
        ],
        "x-paginated": true
      }
    },
    "/v1/options/chain/quotes": {
      "get": {
        "description": "The latest national best bid and offer of every contract. Rows are ordered by date_of_expiry, strike, contract_type (call before put) and paginated with cursor_id; a page reads one expiration at a time and may hold fewer rows than limit. When no date_of_expiry is given the chain covers the expirations within max_dte days (default 30). Reads of an underlying that trades overnight (SPX, SPXW, XSP, VIX, VIXW, RUT, RUTW) outside weekday 09:30-16:15 ET, the curb session included, require the overnight entitlement; during the regular session, parts of a contract whose latest quote or trade is from the overnight session are null for plans without it (listed in meta.coverage.missing and counted in meta.coverage.withheld).",
        "operationId": "optionsChainQuotes",
        "parameters": [
          {
            "description": "Underlying: an option root (SPXW, QQQ, NDXP ...) or an index family: SPX covers the SPX and SPXW roots, NDX the NDX and NDXP roots, RUT the RUT and RUTW roots. Rows name the root of each contract.",
            "in": "query",
            "name": "underlying_symbol",
            "required": true,
            "schema": {
              "maxLength": 8,
              "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
              "type": "string"
            }
          },
          {
            "description": "Only this expiration, YYYY-MM-DD.",
            "in": "query",
            "name": "date_of_expiry",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Only calls or only puts.",
            "in": "query",
            "name": "contract_type",
            "required": false,
            "schema": {
              "enum": [
                "call",
                "put"
              ],
              "type": "string"
            }
          },
          {
            "description": "Lowest strike to return, in dollars.",
            "in": "query",
            "name": "min_strike",
            "required": false,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 99999.999,
              "type": "number"
            }
          },
          {
            "description": "Highest strike to return, in dollars.",
            "in": "query",
            "name": "max_strike",
            "required": false,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 99999.999,
              "type": "number"
            }
          },
          {
            "description": "Without date_of_expiry: include expirations up to this many days away (default 30).",
            "in": "query",
            "name": "max_dte",
            "required": false,
            "schema": {
              "maximum": 1000,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Maximum rows to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 1000,
              "maximum": 2500,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Opaque cursor returned as pagination.next_cursor_id; resumes the same query on the next page.",
            "in": "query",
            "name": "cursor_id",
            "required": false,
            "schema": {
              "maxLength": 1024,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "option_symbol": "SPXW  261016C05800000",
                      "underlying_symbol": "SPXW",
                      "date_of_expiry": "2026-10-16",
                      "strike": 5800,
                      "contract_type": "call",
                      "timestamp": 1792159198500,
                      "bid": 12.3,
                      "bid_size": 10,
                      "bid_exchange": 5,
                      "ask": 12.6,
                      "ask_size": 12,
                      "ask_exchange": 5
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "opra"
                  },
                  "pagination": {
                    "count": 1,
                    "has_more": false,
                    "limit": 1000,
                    "next_cursor_id": null,
                    "next_url": null
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/OptionsChainQuotesRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "required": [
                    "data",
                    "meta",
                    "pagination"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Best bid and offer of every contract of an underlying.",
        "tags": [
          "options"
        ],
        "x-dataset": "options",
        "x-overnight": true,
        "x-paginated": true
      }
    },
    "/v1/options/contract/bars": {
      "get": {
        "description": "Trade candles of one contract from 1-minute to daily, oldest first, paginated with cursor_id. bar_time is the start of the interval; intervals without a trade are omitted. Daily candles (interval=1d, at most 366 days) come from the end-of-day record and carry bar_time 00:00 ET of the trading date; intraday candles accept a range of at most 31 days, or one trading date, and a session.",
        "operationId": "optionsContractBars",
        "parameters": [
          {
            "description": "Option root of the contract, at most six characters: SPXW (weekly and daily, PM-settled) and SPX (monthly, AM-settled) are different roots, as are NDXP and NDX, RUTW and RUT, QQQ, SPY, XSP ...",
            "in": "query",
            "name": "underlying_symbol",
            "required": true,
            "schema": {
              "maxLength": 8,
              "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
              "type": "string"
            }
          },
          {
            "description": "call or put.",
            "in": "query",
            "name": "contract_type",
            "required": true,
            "schema": {
              "enum": [
                "call",
                "put"
              ],
              "type": "string"
            }
          },
          {
            "description": "Strike price in dollars with at most three decimals, for example 5800 or 5812.5.",
            "in": "query",
            "name": "strike",
            "required": true,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 99999.999,
              "type": "number"
            }
          },
          {
            "description": "Expiration date of the contract, YYYY-MM-DD.",
            "in": "query",
            "name": "date_of_expiry",
            "required": true,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Candle length.",
            "in": "query",
            "name": "interval",
            "required": false,
            "schema": {
              "default": "1m",
              "enum": [
                "1m",
                "5m",
                "10m",
                "15m",
                "30m",
                "1h",
                "1d"
              ],
              "type": "string"
            }
          },
          {
            "description": "Start of the range, Unix epoch milliseconds, inclusive. At most 31 days for intraday candles, 366 days for daily ones.",
            "in": "query",
            "name": "start_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "End of the range, Unix epoch milliseconds, exclusive. At most 31 days for intraday candles, 366 days for daily ones.",
            "in": "query",
            "name": "end_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "One trading date, YYYY-MM-DD, instead of start_time and end_time. With a session of gth the window starts on the evening before.",
            "in": "query",
            "name": "date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Trading session: rth is the regular session (09:30-16:15 ET), gth the overnight session that ends on the morning of the trading date (the previous evening 20:15 ET to 09:25 ET, split at midnight ET), all is both with the curb session (to 17:00 ET). gth and all require the overnight entitlement.",
            "in": "query",
            "name": "session",
            "required": false,
            "schema": {
              "default": "rth",
              "enum": [
                "rth",
                "gth",
                "all"
              ],
              "type": "string"
            }
          },
          {
            "description": "Maximum rows to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 1000,
              "maximum": 5000,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Opaque cursor returned as pagination.next_cursor_id; resumes the same query on the next page.",
            "in": "query",
            "name": "cursor_id",
            "required": false,
            "schema": {
              "maxLength": 1024,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "option_symbol": "SPXW  261016C05800000",
                      "bar_time": 1792157400000,
                      "open": 12.4,
                      "high": 13.1,
                      "low": 12.2,
                      "close": 12.9,
                      "volume": 320,
                      "trade_count": 41,
                      "vwap": 12.71
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "opra"
                  },
                  "pagination": {
                    "count": 1,
                    "has_more": false,
                    "limit": 1000,
                    "next_cursor_id": null,
                    "next_url": null
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/OptionsContractBarsRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "required": [
                    "data",
                    "meta",
                    "pagination"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Candles of one contract: open, high, low, close, volume and trade count.",
        "tags": [
          "options"
        ],
        "x-dataset": "options",
        "x-history-params": [
          "start_time",
          "end_time",
          "date"
        ],
        "x-overnight": true,
        "x-paginated": true
      }
    },
    "/v1/options/contract/eod": {
      "get": {
        "description": "One row per trading date: the day's open, high, low, close, volume and trade count, and the best bid and offer at the close. Prices are null on a date without trades. Select a range with start_time and end_time (at most 366 days) or one date with date; the default is the last 30 days.",
        "operationId": "optionsContractEod",
        "parameters": [
          {
            "description": "Option root of the contract, at most six characters: SPXW (weekly and daily, PM-settled) and SPX (monthly, AM-settled) are different roots, as are NDXP and NDX, RUTW and RUT, QQQ, SPY, XSP ...",
            "in": "query",
            "name": "underlying_symbol",
            "required": true,
            "schema": {
              "maxLength": 8,
              "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
              "type": "string"
            }
          },
          {
            "description": "call or put.",
            "in": "query",
            "name": "contract_type",
            "required": true,
            "schema": {
              "enum": [
                "call",
                "put"
              ],
              "type": "string"
            }
          },
          {
            "description": "Strike price in dollars with at most three decimals, for example 5800 or 5812.5.",
            "in": "query",
            "name": "strike",
            "required": true,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 99999.999,
              "type": "number"
            }
          },
          {
            "description": "Expiration date of the contract, YYYY-MM-DD.",
            "in": "query",
            "name": "date_of_expiry",
            "required": true,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Start of the range, Unix epoch milliseconds, inclusive. At most 366 days.",
            "in": "query",
            "name": "start_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "End of the range, Unix epoch milliseconds, exclusive. At most 366 days.",
            "in": "query",
            "name": "end_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "One trading date, YYYY-MM-DD, instead of start_time and end_time. With a session of gth the window starts on the evening before.",
            "in": "query",
            "name": "date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "option_symbol": "SPXW  261016C05800000",
                      "trading_date": "2026-10-15",
                      "last_trade_timestamp": 1792094340000,
                      "open": 11,
                      "high": 13,
                      "low": 10.5,
                      "close": 12.4,
                      "volume": 1800,
                      "trade_count": 212,
                      "bid": 12.3,
                      "bid_size": 10,
                      "ask": 12.6,
                      "ask_size": 12
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "opra"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/OptionsContractEodRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "End-of-day record of one contract for each trading date in a range.",
        "tags": [
          "options"
        ],
        "x-dataset": "options",
        "x-history-params": [
          "start_time",
          "end_time",
          "date"
        ]
      }
    },
    "/v1/options/contract/flow": {
      "get": {
        "description": "Every trade print of one contract on a trading session with the platform's classification: which side of the market it traded on, the inferred sentiment, premium, trade type (sweep, block, split, single, multileg ...) and the contract's Greeks and open interest at the time. Newest first, paginated with cursor_id; one trading session per request (a trading date, or a range inside one session). Filters narrow the prints by premium, size, type, side and sentiment. Covers the underlyings OrderMap tracks.",
        "operationId": "optionsContractFlow",
        "parameters": [
          {
            "description": "Option root of the contract, at most six characters: SPXW (weekly and daily, PM-settled) and SPX (monthly, AM-settled) are different roots, as are NDXP and NDX, RUTW and RUT, QQQ, SPY, XSP ...",
            "in": "query",
            "name": "underlying_symbol",
            "required": true,
            "schema": {
              "maxLength": 8,
              "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
              "type": "string"
            }
          },
          {
            "description": "call or put.",
            "in": "query",
            "name": "contract_type",
            "required": true,
            "schema": {
              "enum": [
                "call",
                "put"
              ],
              "type": "string"
            }
          },
          {
            "description": "Strike price in dollars with at most three decimals, for example 5800 or 5812.5.",
            "in": "query",
            "name": "strike",
            "required": true,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 99999.999,
              "type": "number"
            }
          },
          {
            "description": "Expiration date of the contract, YYYY-MM-DD.",
            "in": "query",
            "name": "date_of_expiry",
            "required": true,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Start of the range, Unix epoch milliseconds, inclusive. Within one trading session.",
            "in": "query",
            "name": "start_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "End of the range, Unix epoch milliseconds, exclusive. Within one trading session.",
            "in": "query",
            "name": "end_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "One trading date, YYYY-MM-DD, instead of start_time and end_time. With a session of gth the window starts on the evening before.",
            "in": "query",
            "name": "date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Trading session: rth is the regular session (09:30-16:15 ET), gth the overnight session that ends on the morning of the trading date (the previous evening 20:15 ET to 09:25 ET, split at midnight ET), all is both with the curb session (to 17:00 ET). gth and all require the overnight entitlement.",
            "in": "query",
            "name": "session",
            "required": false,
            "schema": {
              "default": "rth",
              "enum": [
                "rth",
                "gth",
                "all"
              ],
              "type": "string"
            }
          },
          {
            "description": "Minimum print premium in dollars (price x size x 100).",
            "in": "query",
            "name": "min_premium",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": 0,
              "type": "number"
            }
          },
          {
            "description": "Minimum print size in contracts.",
            "in": "query",
            "name": "min_size",
            "required": false,
            "schema": {
              "maximum": 1000000000,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Only prints of these types (comma-separated): sweep, split, block, single, multileg, cross, floor, auction, iso, golden. A print matches when any listed type applies; sweeps and splits are inferred groupings of prints, not exchange-confirmed.",
            "explode": false,
            "in": "query",
            "name": "trade_type",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "sweep",
                  "split",
                  "block",
                  "single",
                  "multileg",
                  "cross",
                  "floor",
                  "auction",
                  "iso",
                  "golden"
                ],
                "type": "string"
              },
              "maxItems": 10,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Only prints on these sides of the market at the time of the trade (comma-separated): above_ask, ask (at or near the ask), mid, bid (at or near the bid), below_bid or unknown. The same tokens as /v1/options/flow.",
            "explode": false,
            "in": "query",
            "name": "side",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "above_ask",
                  "ask",
                  "mid",
                  "bid",
                  "below_bid",
                  "unknown"
                ],
                "type": "string"
              },
              "maxItems": 6,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Only prints with these inferred sentiments (comma-separated).",
            "explode": false,
            "in": "query",
            "name": "sentiment",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "bullish",
                  "bearish",
                  "neutral",
                  "unknown"
                ],
                "type": "string"
              },
              "maxItems": 4,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Maximum rows to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 100,
              "maximum": 500,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Opaque cursor returned as pagination.next_cursor_id; resumes the same query on the next page.",
            "in": "query",
            "name": "cursor_id",
            "required": false,
            "schema": {
              "maxLength": 1024,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "option_symbol": "SPXW  261016C05800000",
                      "id": "SPXW:20261016:5800000:C:20261016:99",
                      "timestamp": 1792157400123,
                      "price": 12.4,
                      "size": 25,
                      "premium": 31000,
                      "bid": 12.3,
                      "ask": 12.6,
                      "side": "ask",
                      "sentiment": "bullish",
                      "underlying_price": 5801.2,
                      "implied_volatility": 0.182,
                      "delta": 0.51,
                      "open_interest": 4321,
                      "day_volume": 800,
                      "exchange": 5,
                      "exchange_name": "CBOE",
                      "condition": 18,
                      "trade_type": "single",
                      "block": false,
                      "golden": false,
                      "session": "rth"
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "opra"
                  },
                  "pagination": {
                    "count": 1,
                    "has_more": false,
                    "limit": 100,
                    "next_cursor_id": null,
                    "next_url": null
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/OptionsContractFlowRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "required": [
                    "data",
                    "meta",
                    "pagination"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Classified prints of one contract: side, sentiment, premium and type.",
        "tags": [
          "options"
        ],
        "x-dataset": "options",
        "x-history-params": [
          "start_time",
          "end_time",
          "date"
        ],
        "x-overnight": true,
        "x-paginated": true
      }
    },
    "/v1/options/contract/greeks": {
      "get": {
        "description": "The Greeks and implied volatility of one contract sampled at an interval, oldest first, paginated with cursor_id. Greeks are computed during the regular session (09:30-16:15 ET) only, so the route covers that session; the overnight session is not available and meta.coverage.note says so. Select a range with start_time and end_time (at most 31 days) or one trading date with date; the default is the latest regular session.",
        "operationId": "optionsContractGreeks",
        "parameters": [
          {
            "description": "Option root of the contract, at most six characters: SPXW (weekly and daily, PM-settled) and SPX (monthly, AM-settled) are different roots, as are NDXP and NDX, RUTW and RUT, QQQ, SPY, XSP ...",
            "in": "query",
            "name": "underlying_symbol",
            "required": true,
            "schema": {
              "maxLength": 8,
              "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
              "type": "string"
            }
          },
          {
            "description": "call or put.",
            "in": "query",
            "name": "contract_type",
            "required": true,
            "schema": {
              "enum": [
                "call",
                "put"
              ],
              "type": "string"
            }
          },
          {
            "description": "Strike price in dollars with at most three decimals, for example 5800 or 5812.5.",
            "in": "query",
            "name": "strike",
            "required": true,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 99999.999,
              "type": "number"
            }
          },
          {
            "description": "Expiration date of the contract, YYYY-MM-DD.",
            "in": "query",
            "name": "date_of_expiry",
            "required": true,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Which Greeks to compute: first (delta, theta, vega, rho, epsilon, lambda), second (gamma, vanna, charm, vomma, veta), third (speed, zomma, color, ultima) or all (every Greek, including vera, d1, d2 and the dual Greeks). The Greeks of other orders are null.",
            "in": "query",
            "name": "greek_order",
            "required": false,
            "schema": {
              "default": "all",
              "enum": [
                "first",
                "second",
                "third",
                "all"
              ],
              "type": "string"
            }
          },
          {
            "description": "Sampling interval.",
            "in": "query",
            "name": "interval",
            "required": false,
            "schema": {
              "default": "5m",
              "enum": [
                "1m",
                "5m",
                "10m",
                "15m",
                "30m",
                "1h"
              ],
              "type": "string"
            }
          },
          {
            "description": "Start of the range, Unix epoch milliseconds, inclusive. At most 31 days.",
            "in": "query",
            "name": "start_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "End of the range, Unix epoch milliseconds, exclusive. At most 31 days.",
            "in": "query",
            "name": "end_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "One trading date, YYYY-MM-DD, instead of start_time and end_time. With a session of gth the window starts on the evening before.",
            "in": "query",
            "name": "date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Maximum rows to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 1000,
              "maximum": 5000,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Opaque cursor returned as pagination.next_cursor_id; resumes the same query on the next page.",
            "in": "query",
            "name": "cursor_id",
            "required": false,
            "schema": {
              "maxLength": 1024,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "option_symbol": "SPXW  261016C05800000",
                      "timestamp": 1792157700000,
                      "bid": 12.3,
                      "ask": 12.6,
                      "delta": 0.5123,
                      "theta": -3.41,
                      "vega": 2.87,
                      "rho": 0.91,
                      "epsilon": -0.77,
                      "lambda": 48.2,
                      "gamma": 0.0042,
                      "vanna": -0.012,
                      "charm": 0.0031,
                      "vomma": 0.11,
                      "veta": 0.04,
                      "vera": 0.02,
                      "speed": -0.00001,
                      "zomma": -0.0002,
                      "color": -0.0001,
                      "ultima": -0.03,
                      "d1": 0.03,
                      "d2": 0.01,
                      "dual_delta": -0.48,
                      "dual_gamma": 0.0009,
                      "implied_volatility": 0.182,
                      "underlying_timestamp": 1792157699000,
                      "underlying_price": 5801.2
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "opra"
                  },
                  "pagination": {
                    "count": 1,
                    "has_more": false,
                    "limit": 1000,
                    "next_cursor_id": null,
                    "next_url": null
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/OptionsContractGreeksRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "required": [
                    "data",
                    "meta",
                    "pagination"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Greeks and implied volatility of one contract at an interval.",
        "tags": [
          "options"
        ],
        "x-dataset": "options",
        "x-history-params": [
          "start_time",
          "end_time",
          "date"
        ],
        "x-paginated": true
      }
    },
    "/v1/options/contract/greeks-eod": {
      "get": {
        "description": "One row per trading date with the end-of-day Greeks and implied volatility (computed with whole days to expiry), the underlying price, the day's prices and volume and the closing best bid and offer. Select a range with start_time and end_time (at most 366 days) or one date with date; the default is the last 30 days.",
        "operationId": "optionsContractGreeksEod",
        "parameters": [
          {
            "description": "Option root of the contract, at most six characters: SPXW (weekly and daily, PM-settled) and SPX (monthly, AM-settled) are different roots, as are NDXP and NDX, RUTW and RUT, QQQ, SPY, XSP ...",
            "in": "query",
            "name": "underlying_symbol",
            "required": true,
            "schema": {
              "maxLength": 8,
              "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
              "type": "string"
            }
          },
          {
            "description": "call or put.",
            "in": "query",
            "name": "contract_type",
            "required": true,
            "schema": {
              "enum": [
                "call",
                "put"
              ],
              "type": "string"
            }
          },
          {
            "description": "Strike price in dollars with at most three decimals, for example 5800 or 5812.5.",
            "in": "query",
            "name": "strike",
            "required": true,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 99999.999,
              "type": "number"
            }
          },
          {
            "description": "Expiration date of the contract, YYYY-MM-DD.",
            "in": "query",
            "name": "date_of_expiry",
            "required": true,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Start of the range, Unix epoch milliseconds, inclusive. At most 366 days.",
            "in": "query",
            "name": "start_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "End of the range, Unix epoch milliseconds, exclusive. At most 366 days.",
            "in": "query",
            "name": "end_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "One trading date, YYYY-MM-DD, instead of start_time and end_time. With a session of gth the window starts on the evening before.",
            "in": "query",
            "name": "date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "option_symbol": "SPXW  261016C05800000",
                      "trading_date": "2026-10-15",
                      "open": 11,
                      "high": 13,
                      "low": 10.5,
                      "close": 12.4,
                      "volume": 1800,
                      "trade_count": 212,
                      "bid": 12.3,
                      "bid_size": 10,
                      "ask": 12.6,
                      "ask_size": 12,
                      "delta": 0.5123,
                      "theta": -3.41,
                      "vega": 2.87,
                      "rho": 0.91,
                      "epsilon": -0.77,
                      "lambda": 48.2,
                      "gamma": 0.0042,
                      "vanna": -0.012,
                      "charm": 0.0031,
                      "vomma": 0.11,
                      "veta": 0.04,
                      "vera": 0.02,
                      "speed": -0.00001,
                      "zomma": -0.0002,
                      "color": -0.0001,
                      "ultima": -0.03,
                      "d1": 0.03,
                      "d2": 0.01,
                      "dual_delta": -0.48,
                      "dual_gamma": 0.0009,
                      "implied_volatility": 0.182,
                      "underlying_timestamp": 1792094400000,
                      "underlying_price": 5801.2
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "opra"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/OptionsContractGreeksEodRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "End-of-day Greeks, implied volatility and prices of one contract by trading date.",
        "tags": [
          "options"
        ],
        "x-dataset": "options",
        "x-history-params": [
          "start_time",
          "end_time",
          "date"
        ]
      }
    },
    "/v1/options/contract/implied-volatility": {
      "get": {
        "description": "The implied volatility of one contract sampled at an interval, solved from the bid, the midpoint and the ask, oldest first, paginated with cursor_id. Computed during the regular session only, so the route covers that session. Select a range with start_time and end_time (at most 31 days) or one trading date with date; the default is the latest regular session.",
        "operationId": "optionsContractImpliedVolatility",
        "parameters": [
          {
            "description": "Option root of the contract, at most six characters: SPXW (weekly and daily, PM-settled) and SPX (monthly, AM-settled) are different roots, as are NDXP and NDX, RUTW and RUT, QQQ, SPY, XSP ...",
            "in": "query",
            "name": "underlying_symbol",
            "required": true,
            "schema": {
              "maxLength": 8,
              "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
              "type": "string"
            }
          },
          {
            "description": "call or put.",
            "in": "query",
            "name": "contract_type",
            "required": true,
            "schema": {
              "enum": [
                "call",
                "put"
              ],
              "type": "string"
            }
          },
          {
            "description": "Strike price in dollars with at most three decimals, for example 5800 or 5812.5.",
            "in": "query",
            "name": "strike",
            "required": true,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 99999.999,
              "type": "number"
            }
          },
          {
            "description": "Expiration date of the contract, YYYY-MM-DD.",
            "in": "query",
            "name": "date_of_expiry",
            "required": true,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Sampling interval.",
            "in": "query",
            "name": "interval",
            "required": false,
            "schema": {
              "default": "5m",
              "enum": [
                "1m",
                "5m",
                "10m",
                "15m",
                "30m",
                "1h"
              ],
              "type": "string"
            }
          },
          {
            "description": "Start of the range, Unix epoch milliseconds, inclusive. At most 31 days.",
            "in": "query",
            "name": "start_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "End of the range, Unix epoch milliseconds, exclusive. At most 31 days.",
            "in": "query",
            "name": "end_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "One trading date, YYYY-MM-DD, instead of start_time and end_time. With a session of gth the window starts on the evening before.",
            "in": "query",
            "name": "date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Maximum rows to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 1000,
              "maximum": 5000,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Opaque cursor returned as pagination.next_cursor_id; resumes the same query on the next page.",
            "in": "query",
            "name": "cursor_id",
            "required": false,
            "schema": {
              "maxLength": 1024,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "option_symbol": "SPXW  261016C05800000",
                      "timestamp": 1792157700000,
                      "bid": 12.3,
                      "bid_implied_volatility": 0.179,
                      "midpoint": 12.45,
                      "implied_volatility": 0.182,
                      "ask": 12.6,
                      "ask_implied_volatility": 0.185,
                      "underlying_timestamp": 1792157699000,
                      "underlying_price": 5801.2
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "opra"
                  },
                  "pagination": {
                    "count": 1,
                    "has_more": false,
                    "limit": 1000,
                    "next_cursor_id": null,
                    "next_url": null
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/OptionsContractImpliedVolatilityRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "required": [
                    "data",
                    "meta",
                    "pagination"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Implied volatility of one contract at an interval, from the bid, midpoint and ask.",
        "tags": [
          "options"
        ],
        "x-dataset": "options",
        "x-history-params": [
          "start_time",
          "end_time",
          "date"
        ],
        "x-paginated": true
      }
    },
    "/v1/options/contract/open-interest": {
      "get": {
        "description": "The open interest published on the morning of each trading date; it reflects the positions at the previous session's close. A date on which the contract had no open interest is absent. Select a range with start_time and end_time (at most 366 days) or one date with date; the default is the last 30 days.",
        "operationId": "optionsContractOpenInterest",
        "parameters": [
          {
            "description": "Option root of the contract, at most six characters: SPXW (weekly and daily, PM-settled) and SPX (monthly, AM-settled) are different roots, as are NDXP and NDX, RUTW and RUT, QQQ, SPY, XSP ...",
            "in": "query",
            "name": "underlying_symbol",
            "required": true,
            "schema": {
              "maxLength": 8,
              "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
              "type": "string"
            }
          },
          {
            "description": "call or put.",
            "in": "query",
            "name": "contract_type",
            "required": true,
            "schema": {
              "enum": [
                "call",
                "put"
              ],
              "type": "string"
            }
          },
          {
            "description": "Strike price in dollars with at most three decimals, for example 5800 or 5812.5.",
            "in": "query",
            "name": "strike",
            "required": true,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 99999.999,
              "type": "number"
            }
          },
          {
            "description": "Expiration date of the contract, YYYY-MM-DD.",
            "in": "query",
            "name": "date_of_expiry",
            "required": true,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Start of the range, Unix epoch milliseconds, inclusive. At most 366 days.",
            "in": "query",
            "name": "start_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "End of the range, Unix epoch milliseconds, exclusive. At most 366 days.",
            "in": "query",
            "name": "end_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "One trading date, YYYY-MM-DD, instead of start_time and end_time. With a session of gth the window starts on the evening before.",
            "in": "query",
            "name": "date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "option_symbol": "SPXW  261016C05800000",
                      "trading_date": "2026-10-16",
                      "timestamp": 1792146600000,
                      "open_interest": 4321
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "opra"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/OptionsContractOpenInterestRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Open interest of one contract for each trading date in a range.",
        "tags": [
          "options"
        ],
        "x-dataset": "options",
        "x-history-params": [
          "start_time",
          "end_time",
          "date"
        ]
      }
    },
    "/v1/options/contract/price-history": {
      "get": {
        "description": "Open, high, low, close, volume, trade count and volume-weighted price of one contract at 1-minute to 1-hour intervals, with the underlying price of each interval. Built from the trades OrderMap classifies, so it covers the underlyings it tracks. Select up to five trading sessions with start_time and end_time, or one trading date with date; the default is the current or latest session. Intervals without a trade are omitted. For a free-form range of candles from the exchange feed use /v1/options/contract/bars.",
        "operationId": "optionsContractPriceHistory",
        "parameters": [
          {
            "description": "Option root of the contract, at most six characters: SPXW (weekly and daily, PM-settled) and SPX (monthly, AM-settled) are different roots, as are NDXP and NDX, RUTW and RUT, QQQ, SPY, XSP ...",
            "in": "query",
            "name": "underlying_symbol",
            "required": true,
            "schema": {
              "maxLength": 8,
              "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
              "type": "string"
            }
          },
          {
            "description": "call or put.",
            "in": "query",
            "name": "contract_type",
            "required": true,
            "schema": {
              "enum": [
                "call",
                "put"
              ],
              "type": "string"
            }
          },
          {
            "description": "Strike price in dollars with at most three decimals, for example 5800 or 5812.5.",
            "in": "query",
            "name": "strike",
            "required": true,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 99999.999,
              "type": "number"
            }
          },
          {
            "description": "Expiration date of the contract, YYYY-MM-DD.",
            "in": "query",
            "name": "date_of_expiry",
            "required": true,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Candle length.",
            "in": "query",
            "name": "interval",
            "required": false,
            "schema": {
              "default": "5m",
              "enum": [
                "1m",
                "5m",
                "15m",
                "30m",
                "1h"
              ],
              "type": "string"
            }
          },
          {
            "description": "Start of the range, Unix epoch milliseconds, inclusive. At most five trading sessions.",
            "in": "query",
            "name": "start_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "End of the range, Unix epoch milliseconds, exclusive. At most five trading sessions.",
            "in": "query",
            "name": "end_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "One trading date, YYYY-MM-DD, instead of start_time and end_time. With a session of gth the window starts on the evening before.",
            "in": "query",
            "name": "date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Trading session: rth is the regular session (09:30-16:15 ET), gth the overnight session that ends on the morning of the trading date (the previous evening 20:15 ET to 09:25 ET, split at midnight ET), all is both with the curb session (to 17:00 ET). gth and all require the overnight entitlement.",
            "in": "query",
            "name": "session",
            "required": false,
            "schema": {
              "default": "rth",
              "enum": [
                "rth",
                "gth",
                "all"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "option_symbol": "SPXW  261016C05800000",
                      "bar_time": 1792157700000,
                      "open": 12.4,
                      "high": 13.1,
                      "low": 12.2,
                      "close": 12.9,
                      "volume": 320,
                      "trade_count": 41,
                      "vwap": 12.71,
                      "underlying_price": 5801.2
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "opra"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/OptionsContractPriceHistoryRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Candles of one contract from the platform's own trade record.",
        "tags": [
          "options"
        ],
        "x-dataset": "options",
        "x-history-params": [
          "start_time",
          "end_time",
          "date"
        ],
        "x-mcp": true,
        "x-overnight": true
      }
    },
    "/v1/options/contract/quote-at-time": {
      "get": {
        "description": "The national best bid and offer that prevailed at the given instant: the last quote at or before it. quote.timestamp is when that quote was published.",
        "operationId": "optionsContractQuoteAtTime",
        "parameters": [
          {
            "description": "Option root of the contract, at most six characters: SPXW (weekly and daily, PM-settled) and SPX (monthly, AM-settled) are different roots, as are NDXP and NDX, RUTW and RUT, QQQ, SPY, XSP ...",
            "in": "query",
            "name": "underlying_symbol",
            "required": true,
            "schema": {
              "maxLength": 8,
              "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
              "type": "string"
            }
          },
          {
            "description": "call or put.",
            "in": "query",
            "name": "contract_type",
            "required": true,
            "schema": {
              "enum": [
                "call",
                "put"
              ],
              "type": "string"
            }
          },
          {
            "description": "Strike price in dollars with at most three decimals, for example 5800 or 5812.5.",
            "in": "query",
            "name": "strike",
            "required": true,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 99999.999,
              "type": "number"
            }
          },
          {
            "description": "Expiration date of the contract, YYYY-MM-DD.",
            "in": "query",
            "name": "date_of_expiry",
            "required": true,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "The instant, Unix epoch milliseconds. Instants outside the regular session (09:30-16:15 ET) require the overnight entitlement.",
            "in": "query",
            "name": "timestamp",
            "required": true,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "option_symbol": "SPXW  261016C05800000",
                    "underlying_symbol": "SPXW",
                    "contract_type": "call",
                    "strike": 5800,
                    "date_of_expiry": "2026-10-16",
                    "requested_timestamp": 1792157400000,
                    "quote": {
                      "timestamp": 1792157399870,
                      "bid": 12.3,
                      "bid_size": 10,
                      "bid_exchange": 5,
                      "bid_condition": 50,
                      "ask": 12.6,
                      "ask_size": 12,
                      "ask_exchange": 5,
                      "ask_condition": 50
                    }
                  },
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "opra"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/OptionsContractQuoteAtTimeRow"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "The best bid and offer of one contract at an instant.",
        "tags": [
          "options"
        ],
        "x-dataset": "options",
        "x-history-params": [
          "timestamp"
        ],
        "x-overnight": true
      }
    },
    "/v1/options/contract/quotes": {
      "get": {
        "description": "The national best bid and offer of one contract, oldest first, paginated with cursor_id. interval=tick returns every quote change (at most 7 days per request); a time interval returns one row per interval timestamp holding the last quote at that timestamp (sub-minute intervals at most 7 days, others 31 days). Select a range with start_time and end_time or one trading date with date; the default is the latest regular session. Several quotes can share a millisecond.",
        "operationId": "optionsContractQuotes",
        "parameters": [
          {
            "description": "Option root of the contract, at most six characters: SPXW (weekly and daily, PM-settled) and SPX (monthly, AM-settled) are different roots, as are NDXP and NDX, RUTW and RUT, QQQ, SPY, XSP ...",
            "in": "query",
            "name": "underlying_symbol",
            "required": true,
            "schema": {
              "maxLength": 8,
              "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
              "type": "string"
            }
          },
          {
            "description": "call or put.",
            "in": "query",
            "name": "contract_type",
            "required": true,
            "schema": {
              "enum": [
                "call",
                "put"
              ],
              "type": "string"
            }
          },
          {
            "description": "Strike price in dollars with at most three decimals, for example 5800 or 5812.5.",
            "in": "query",
            "name": "strike",
            "required": true,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 99999.999,
              "type": "number"
            }
          },
          {
            "description": "Expiration date of the contract, YYYY-MM-DD.",
            "in": "query",
            "name": "date_of_expiry",
            "required": true,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "tick for every quote change, or the sampling interval.",
            "in": "query",
            "name": "interval",
            "required": false,
            "schema": {
              "default": "1m",
              "enum": [
                "tick",
                "1s",
                "5s",
                "10s",
                "15s",
                "30s",
                "1m",
                "5m",
                "10m",
                "15m",
                "30m",
                "1h"
              ],
              "type": "string"
            }
          },
          {
            "description": "Start of the range, Unix epoch milliseconds, inclusive. At most 31 days for intervals of a minute or more, otherwise 7 days.",
            "in": "query",
            "name": "start_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "End of the range, Unix epoch milliseconds, exclusive. At most 31 days for intervals of a minute or more, otherwise 7 days.",
            "in": "query",
            "name": "end_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "One trading date, YYYY-MM-DD, instead of start_time and end_time. With a session of gth the window starts on the evening before.",
            "in": "query",
            "name": "date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Trading session: rth is the regular session (09:30-16:15 ET), gth the overnight session that ends on the morning of the trading date (the previous evening 20:15 ET to 09:25 ET, split at midnight ET), all is both with the curb session (to 17:00 ET). gth and all require the overnight entitlement.",
            "in": "query",
            "name": "session",
            "required": false,
            "schema": {
              "default": "rth",
              "enum": [
                "rth",
                "gth",
                "all"
              ],
              "type": "string"
            }
          },
          {
            "description": "Maximum rows to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 1000,
              "maximum": 5000,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Opaque cursor returned as pagination.next_cursor_id; resumes the same query on the next page.",
            "in": "query",
            "name": "cursor_id",
            "required": false,
            "schema": {
              "maxLength": 1024,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "option_symbol": "SPXW  261016C05800000",
                      "timestamp": 1792157400123,
                      "bid": 12.3,
                      "bid_size": 10,
                      "bid_exchange": 5,
                      "bid_condition": 50,
                      "ask": 12.6,
                      "ask_size": 12,
                      "ask_exchange": 5,
                      "ask_condition": 50
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "opra"
                  },
                  "pagination": {
                    "count": 1,
                    "has_more": false,
                    "limit": 1000,
                    "next_cursor_id": null,
                    "next_url": null
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/OptionsContractQuotesRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "required": [
                    "data",
                    "meta",
                    "pagination"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Best bid and offer of one contract: every change, or sampled at an interval.",
        "tags": [
          "options"
        ],
        "x-dataset": "options",
        "x-history-params": [
          "start_time",
          "end_time",
          "date"
        ],
        "x-overnight": true,
        "x-paginated": true
      }
    },
    "/v1/options/contract/snapshot": {
      "get": {
        "description": "The current state of one contract in a single call: the best bid and offer, the trading day so far (open, high, low, last, volume), the published open interest and the Greeks with implied volatility. Greeks are computed during the regular session; stamped outside it they are null and meta.coverage.note says so. A component the service cannot provide is null and listed in meta.coverage.missing. Outside market hours the values are the last ones of the previous session. Reads of an underlying that trades overnight (SPX, SPXW, XSP, VIX, VIXW, RUT, RUTW) outside weekday 09:30-16:15 ET, the curb session included, require the overnight entitlement; during the regular session, parts of a contract whose latest quote or trade is from the overnight session are null for plans without it (listed in meta.coverage.missing and counted in meta.coverage.withheld).",
        "operationId": "optionsContractSnapshot",
        "parameters": [
          {
            "description": "Option root of the contract, at most six characters: SPXW (weekly and daily, PM-settled) and SPX (monthly, AM-settled) are different roots, as are NDXP and NDX, RUTW and RUT, QQQ, SPY, XSP ...",
            "in": "query",
            "name": "underlying_symbol",
            "required": true,
            "schema": {
              "maxLength": 8,
              "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
              "type": "string"
            }
          },
          {
            "description": "call or put.",
            "in": "query",
            "name": "contract_type",
            "required": true,
            "schema": {
              "enum": [
                "call",
                "put"
              ],
              "type": "string"
            }
          },
          {
            "description": "Strike price in dollars with at most three decimals, for example 5800 or 5812.5.",
            "in": "query",
            "name": "strike",
            "required": true,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 99999.999,
              "type": "number"
            }
          },
          {
            "description": "Expiration date of the contract, YYYY-MM-DD.",
            "in": "query",
            "name": "date_of_expiry",
            "required": true,
            "schema": {
              "format": "date",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "option_symbol": "SPXW  261016C05800000",
                    "underlying_symbol": "SPXW",
                    "contract_type": "call",
                    "strike": 5800,
                    "date_of_expiry": "2026-10-16",
                    "quote": {
                      "timestamp": 1792159198500,
                      "bid": 12.3,
                      "bid_size": 10,
                      "bid_exchange": 5,
                      "ask": 12.6,
                      "ask_size": 12,
                      "ask_exchange": 5
                    },
                    "day": {
                      "timestamp": 1792159140000,
                      "open": 11,
                      "high": 13,
                      "low": 10.5,
                      "close": 12.4,
                      "volume": 800,
                      "trade_count": 60
                    },
                    "open_interest": {
                      "timestamp": 1792146600000,
                      "open_interest": 4321
                    },
                    "greeks": {
                      "timestamp": 1792159198500,
                      "delta": 0.5123,
                      "theta": -3.41,
                      "vega": 2.87,
                      "rho": 0.91,
                      "epsilon": -0.77,
                      "lambda": 48.2,
                      "gamma": 0.0042,
                      "vanna": -0.012,
                      "charm": 0.0031,
                      "vomma": 0.11,
                      "veta": 0.04,
                      "vera": 0.02,
                      "speed": -0.00001,
                      "zomma": -0.0002,
                      "color": -0.0001,
                      "ultima": -0.03,
                      "d1": 0.03,
                      "d2": 0.01,
                      "dual_delta": -0.48,
                      "dual_gamma": 0.0009,
                      "implied_volatility": 0.182,
                      "underlying_timestamp": 1792159198000,
                      "underlying_price": 5801.2
                    }
                  },
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "opra"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/OptionsContractSnapshotRow"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Current quote, day statistics, open interest and Greeks of one contract.",
        "tags": [
          "options"
        ],
        "x-dataset": "options",
        "x-overnight": true
      }
    },
    "/v1/options/contract/stats": {
      "get": {
        "description": "Totals for one contract on one trading session: premium, volume and prints, split by side of the market, by trade type and by inferred sentiment, with the contract's open interest. The default is the current or latest session. Covers the underlyings OrderMap tracks. Limitation: the totals are computed per underlying family, so for a root that shares its family with another (SPX with SPXW, NDX with NDXP, RUT with RUTW, VIX with VIXW) they also include the other root's contract of the same strike and expiry when it exists; the response carries a warning then. /v1/options/contract/flow always returns the prints of the one contract you name.",
        "operationId": "optionsContractStats",
        "parameters": [
          {
            "description": "Option root of the contract, at most six characters: SPXW (weekly and daily, PM-settled) and SPX (monthly, AM-settled) are different roots, as are NDXP and NDX, RUTW and RUT, QQQ, SPY, XSP ...",
            "in": "query",
            "name": "underlying_symbol",
            "required": true,
            "schema": {
              "maxLength": 8,
              "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
              "type": "string"
            }
          },
          {
            "description": "call or put.",
            "in": "query",
            "name": "contract_type",
            "required": true,
            "schema": {
              "enum": [
                "call",
                "put"
              ],
              "type": "string"
            }
          },
          {
            "description": "Strike price in dollars with at most three decimals, for example 5800 or 5812.5.",
            "in": "query",
            "name": "strike",
            "required": true,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 99999.999,
              "type": "number"
            }
          },
          {
            "description": "Expiration date of the contract, YYYY-MM-DD.",
            "in": "query",
            "name": "date_of_expiry",
            "required": true,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Trading date, YYYY-MM-DD; the default is the current or latest session.",
            "in": "query",
            "name": "date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Trading session: rth is the regular session (09:30-16:15 ET), gth the overnight session that ends on the morning of the trading date (the previous evening 20:15 ET to 09:25 ET, split at midnight ET), all is both with the curb session (to 17:00 ET). gth and all require the overnight entitlement.",
            "in": "query",
            "name": "session",
            "required": false,
            "schema": {
              "default": "rth",
              "enum": [
                "rth",
                "gth",
                "all"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "option_symbol": "SPXW  261016C05800000",
                    "underlying_symbol": "SPXW",
                    "contract_type": "call",
                    "strike": 5800,
                    "date_of_expiry": "2026-10-16",
                    "trading_date": "2026-10-16",
                    "session": "rth",
                    "premium": 4120000,
                    "volume": 3300,
                    "trade_count": 412,
                    "by_side": {
                      "above_ask": {
                        "premium": 0,
                        "volume": 0,
                        "trade_count": 0
                      },
                      "ask": {
                        "premium": 2400000,
                        "volume": 1900,
                        "trade_count": 170
                      },
                      "mid": {
                        "premium": 0,
                        "volume": 0,
                        "trade_count": 0
                      },
                      "bid": {
                        "premium": 900000,
                        "volume": 700,
                        "trade_count": 160
                      },
                      "below_bid": {
                        "premium": 0,
                        "volume": 0,
                        "trade_count": 0
                      },
                      "unknown": {
                        "premium": 820000,
                        "volume": 700,
                        "trade_count": 82
                      }
                    },
                    "sentiment": {
                      "bullish_premium": 2400000,
                      "bearish_premium": 900000,
                      "neutral_premium": 820000,
                      "label": "bullish"
                    },
                    "trade_types": {
                      "sweep": {
                        "count": 14,
                        "premium": 1200000
                      },
                      "split": {
                        "count": 0,
                        "premium": 0
                      },
                      "block": {
                        "count": 2,
                        "premium": 700000
                      },
                      "golden": {
                        "count": 0,
                        "premium": 0
                      },
                      "multileg": {
                        "count": 0,
                        "premium": 0
                      },
                      "cross": {
                        "count": 0,
                        "premium": 0
                      },
                      "floor": {
                        "count": 0,
                        "premium": 0
                      }
                    },
                    "open_interest": 4321
                  },
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "opra"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/OptionsContractStatsRow"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Print statistics of one contract on a trading session.",
        "tags": [
          "options"
        ],
        "x-dataset": "options",
        "x-history-params": [
          "date"
        ],
        "x-overnight": true
      }
    },
    "/v1/options/contract/trade-at-time": {
      "get": {
        "description": "The last trade at or before the given instant. trade.timestamp is when that trade occurred.",
        "operationId": "optionsContractTradeAtTime",
        "parameters": [
          {
            "description": "Option root of the contract, at most six characters: SPXW (weekly and daily, PM-settled) and SPX (monthly, AM-settled) are different roots, as are NDXP and NDX, RUTW and RUT, QQQ, SPY, XSP ...",
            "in": "query",
            "name": "underlying_symbol",
            "required": true,
            "schema": {
              "maxLength": 8,
              "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
              "type": "string"
            }
          },
          {
            "description": "call or put.",
            "in": "query",
            "name": "contract_type",
            "required": true,
            "schema": {
              "enum": [
                "call",
                "put"
              ],
              "type": "string"
            }
          },
          {
            "description": "Strike price in dollars with at most three decimals, for example 5800 or 5812.5.",
            "in": "query",
            "name": "strike",
            "required": true,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 99999.999,
              "type": "number"
            }
          },
          {
            "description": "Expiration date of the contract, YYYY-MM-DD.",
            "in": "query",
            "name": "date_of_expiry",
            "required": true,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "The instant, Unix epoch milliseconds. Instants outside the regular session (09:30-16:15 ET) require the overnight entitlement.",
            "in": "query",
            "name": "timestamp",
            "required": true,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "option_symbol": "SPXW  261016C05800000",
                    "underlying_symbol": "SPXW",
                    "contract_type": "call",
                    "strike": 5800,
                    "date_of_expiry": "2026-10-16",
                    "requested_timestamp": 1792157400000,
                    "trade": {
                      "timestamp": 1792157398123,
                      "sequence": 1563208,
                      "price": 12.4,
                      "size": 25,
                      "exchange": 5,
                      "condition": 18,
                      "extended_conditions": []
                    }
                  },
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "opra"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/OptionsContractTradeAtTimeRow"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "The last trade of one contract at an instant.",
        "tags": [
          "options"
        ],
        "x-dataset": "options",
        "x-history-params": [
          "timestamp"
        ],
        "x-overnight": true
      }
    },
    "/v1/options/contract/trade-greeks": {
      "get": {
        "description": "Each trade print of one contract with the Greeks and implied volatility at the moment of the trade, oldest first, paginated with cursor_id. Greeks are computed during the regular session only, so the route covers that session. Select a range with start_time and end_time (at most 7 days) or one trading date with date; the default is the latest regular session.",
        "operationId": "optionsContractTradeGreeks",
        "parameters": [
          {
            "description": "Option root of the contract, at most six characters: SPXW (weekly and daily, PM-settled) and SPX (monthly, AM-settled) are different roots, as are NDXP and NDX, RUTW and RUT, QQQ, SPY, XSP ...",
            "in": "query",
            "name": "underlying_symbol",
            "required": true,
            "schema": {
              "maxLength": 8,
              "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
              "type": "string"
            }
          },
          {
            "description": "call or put.",
            "in": "query",
            "name": "contract_type",
            "required": true,
            "schema": {
              "enum": [
                "call",
                "put"
              ],
              "type": "string"
            }
          },
          {
            "description": "Strike price in dollars with at most three decimals, for example 5800 or 5812.5.",
            "in": "query",
            "name": "strike",
            "required": true,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 99999.999,
              "type": "number"
            }
          },
          {
            "description": "Expiration date of the contract, YYYY-MM-DD.",
            "in": "query",
            "name": "date_of_expiry",
            "required": true,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Which Greeks to compute: first (delta, theta, vega, rho, epsilon, lambda), second (gamma, vanna, charm, vomma, veta), third (speed, zomma, color, ultima) or all (every Greek, including vera, d1, d2 and the dual Greeks). The Greeks of other orders are null.",
            "in": "query",
            "name": "greek_order",
            "required": false,
            "schema": {
              "default": "all",
              "enum": [
                "first",
                "second",
                "third",
                "all"
              ],
              "type": "string"
            }
          },
          {
            "description": "Start of the range, Unix epoch milliseconds, inclusive. At most 7 days.",
            "in": "query",
            "name": "start_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "End of the range, Unix epoch milliseconds, exclusive. At most 7 days.",
            "in": "query",
            "name": "end_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "One trading date, YYYY-MM-DD, instead of start_time and end_time. With a session of gth the window starts on the evening before.",
            "in": "query",
            "name": "date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Maximum rows to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 500,
              "maximum": 2000,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Opaque cursor returned as pagination.next_cursor_id; resumes the same query on the next page.",
            "in": "query",
            "name": "cursor_id",
            "required": false,
            "schema": {
              "maxLength": 1024,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "option_symbol": "SPXW  261016C05800000",
                      "timestamp": 1792157400123,
                      "sequence": 1563208,
                      "price": 12.4,
                      "size": 25,
                      "exchange": 5,
                      "condition": 18,
                      "extended_conditions": [],
                      "delta": 0.5123,
                      "theta": -3.41,
                      "vega": 2.87,
                      "rho": 0.91,
                      "epsilon": -0.77,
                      "lambda": 48.2,
                      "gamma": 0.0042,
                      "vanna": -0.012,
                      "charm": 0.0031,
                      "vomma": 0.11,
                      "veta": 0.04,
                      "vera": 0.02,
                      "speed": -0.00001,
                      "zomma": -0.0002,
                      "color": -0.0001,
                      "ultima": -0.03,
                      "d1": 0.03,
                      "d2": 0.01,
                      "dual_delta": -0.48,
                      "dual_gamma": 0.0009,
                      "implied_volatility": 0.182,
                      "underlying_timestamp": 1792157400000,
                      "underlying_price": 5801.2
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "opra"
                  },
                  "pagination": {
                    "count": 1,
                    "has_more": false,
                    "limit": 500,
                    "next_cursor_id": null,
                    "next_url": null
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/OptionsContractTradeGreeksRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "required": [
                    "data",
                    "meta",
                    "pagination"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Greeks and implied volatility of one contract at each trade.",
        "tags": [
          "options"
        ],
        "x-dataset": "options",
        "x-history-params": [
          "start_time",
          "end_time",
          "date"
        ],
        "x-paginated": true
      }
    },
    "/v1/options/contract/trade-quotes": {
      "get": {
        "description": "Each trade print of one contract paired with the national best bid and offer that preceded it, oldest first, paginated with cursor_id. Use it to classify trades against the market. Select a range with start_time and end_time (at most 31 days) or one trading date with date; the default is the latest regular session.",
        "operationId": "optionsContractTradeQuotes",
        "parameters": [
          {
            "description": "Option root of the contract, at most six characters: SPXW (weekly and daily, PM-settled) and SPX (monthly, AM-settled) are different roots, as are NDXP and NDX, RUTW and RUT, QQQ, SPY, XSP ...",
            "in": "query",
            "name": "underlying_symbol",
            "required": true,
            "schema": {
              "maxLength": 8,
              "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
              "type": "string"
            }
          },
          {
            "description": "call or put.",
            "in": "query",
            "name": "contract_type",
            "required": true,
            "schema": {
              "enum": [
                "call",
                "put"
              ],
              "type": "string"
            }
          },
          {
            "description": "Strike price in dollars with at most three decimals, for example 5800 or 5812.5.",
            "in": "query",
            "name": "strike",
            "required": true,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 99999.999,
              "type": "number"
            }
          },
          {
            "description": "Expiration date of the contract, YYYY-MM-DD.",
            "in": "query",
            "name": "date_of_expiry",
            "required": true,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Start of the range, Unix epoch milliseconds, inclusive. At most 31 days.",
            "in": "query",
            "name": "start_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "End of the range, Unix epoch milliseconds, exclusive. At most 31 days.",
            "in": "query",
            "name": "end_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "One trading date, YYYY-MM-DD, instead of start_time and end_time. With a session of gth the window starts on the evening before.",
            "in": "query",
            "name": "date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Trading session: rth is the regular session (09:30-16:15 ET), gth the overnight session that ends on the morning of the trading date (the previous evening 20:15 ET to 09:25 ET, split at midnight ET), all is both with the curb session (to 17:00 ET). gth and all require the overnight entitlement.",
            "in": "query",
            "name": "session",
            "required": false,
            "schema": {
              "default": "rth",
              "enum": [
                "rth",
                "gth",
                "all"
              ],
              "type": "string"
            }
          },
          {
            "description": "Maximum rows to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 1000,
              "maximum": 5000,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Opaque cursor returned as pagination.next_cursor_id; resumes the same query on the next page.",
            "in": "query",
            "name": "cursor_id",
            "required": false,
            "schema": {
              "maxLength": 1024,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "option_symbol": "SPXW  261016C05800000",
                      "timestamp": 1792157400123,
                      "quote_timestamp": 1792157400120,
                      "sequence": 1563208,
                      "price": 12.4,
                      "size": 25,
                      "exchange": 5,
                      "condition": 18,
                      "extended_conditions": [],
                      "bid": 12.3,
                      "bid_size": 10,
                      "bid_exchange": 5,
                      "bid_condition": 50,
                      "ask": 12.6,
                      "ask_size": 12,
                      "ask_exchange": 5,
                      "ask_condition": 50
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "opra"
                  },
                  "pagination": {
                    "count": 1,
                    "has_more": false,
                    "limit": 1000,
                    "next_cursor_id": null,
                    "next_url": null
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/OptionsContractTradeQuotesRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "required": [
                    "data",
                    "meta",
                    "pagination"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Every trade of one contract with the best bid and offer at the trade.",
        "tags": [
          "options"
        ],
        "x-dataset": "options",
        "x-history-params": [
          "start_time",
          "end_time",
          "date"
        ],
        "x-overnight": true,
        "x-paginated": true
      }
    },
    "/v1/options/contract/trades": {
      "get": {
        "description": "Trade prints of one contract, oldest first, paginated on (timestamp, sequence) with cursor_id. Select an explicit range with start_time and end_time (at most 31 days) or one trading date with date; the default is the latest regular session. The session parameter selects the regular session (rth), the overnight session (gth) or both (all); an overnight session ends on the morning of its trading date and starts the evening before. Prices are dollars per contract; each print is one row.",
        "operationId": "optionsContractTrades",
        "parameters": [
          {
            "description": "Option root of the contract, at most six characters: SPXW (weekly and daily, PM-settled) and SPX (monthly, AM-settled) are different roots, as are NDXP and NDX, RUTW and RUT, QQQ, SPY, XSP ...",
            "in": "query",
            "name": "underlying_symbol",
            "required": true,
            "schema": {
              "maxLength": 8,
              "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
              "type": "string"
            }
          },
          {
            "description": "call or put.",
            "in": "query",
            "name": "contract_type",
            "required": true,
            "schema": {
              "enum": [
                "call",
                "put"
              ],
              "type": "string"
            }
          },
          {
            "description": "Strike price in dollars with at most three decimals, for example 5800 or 5812.5.",
            "in": "query",
            "name": "strike",
            "required": true,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 99999.999,
              "type": "number"
            }
          },
          {
            "description": "Expiration date of the contract, YYYY-MM-DD.",
            "in": "query",
            "name": "date_of_expiry",
            "required": true,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Start of the range, Unix epoch milliseconds, inclusive. At most 31 days.",
            "in": "query",
            "name": "start_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "End of the range, Unix epoch milliseconds, exclusive. At most 31 days.",
            "in": "query",
            "name": "end_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "One trading date, YYYY-MM-DD, instead of start_time and end_time. With a session of gth the window starts on the evening before.",
            "in": "query",
            "name": "date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Trading session: rth is the regular session (09:30-16:15 ET), gth the overnight session that ends on the morning of the trading date (the previous evening 20:15 ET to 09:25 ET, split at midnight ET), all is both with the curb session (to 17:00 ET). gth and all require the overnight entitlement.",
            "in": "query",
            "name": "session",
            "required": false,
            "schema": {
              "default": "rth",
              "enum": [
                "rth",
                "gth",
                "all"
              ],
              "type": "string"
            }
          },
          {
            "description": "Maximum rows to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 1000,
              "maximum": 5000,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Opaque cursor returned as pagination.next_cursor_id; resumes the same query on the next page.",
            "in": "query",
            "name": "cursor_id",
            "required": false,
            "schema": {
              "maxLength": 1024,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "option_symbol": "SPXW  261016C05800000",
                      "timestamp": 1792157400123,
                      "sequence": 1563208,
                      "price": 12.4,
                      "size": 25,
                      "exchange": 5,
                      "condition": 18,
                      "extended_conditions": []
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "opra"
                  },
                  "pagination": {
                    "count": 1,
                    "has_more": false,
                    "limit": 1000,
                    "next_cursor_id": null,
                    "next_url": null
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/OptionsContractTradesRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "required": [
                    "data",
                    "meta",
                    "pagination"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Every trade of one contract in a time range.",
        "tags": [
          "options"
        ],
        "x-dataset": "options",
        "x-history-params": [
          "start_time",
          "end_time",
          "date"
        ],
        "x-overnight": true,
        "x-paginated": true
      }
    },
    "/v1/options/contracts": {
      "get": {
        "description": "The contracts of an underlying ordered by date_of_expiry, strike, contract_type (call before put), paginated with cursor_id. Without date it lists what is listed now; with date it lists the contracts that were quoted on that date, including ones that have since expired. Without date_of_expiry the listing covers the expirations within max_dte days (default 30). For an index family such as SPX every root is included and each row names its root.",
        "operationId": "optionsContracts",
        "parameters": [
          {
            "description": "Underlying: an option root (SPXW, QQQ ...) or an index family (SPX covers SPX and SPXW).",
            "in": "query",
            "name": "underlying_symbol",
            "required": true,
            "schema": {
              "maxLength": 8,
              "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
              "type": "string"
            }
          },
          {
            "description": "Only this expiration, YYYY-MM-DD.",
            "in": "query",
            "name": "date_of_expiry",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Only calls or only puts.",
            "in": "query",
            "name": "contract_type",
            "required": false,
            "schema": {
              "enum": [
                "call",
                "put"
              ],
              "type": "string"
            }
          },
          {
            "description": "List the contracts quoted on this past date, YYYY-MM-DD, instead of the current listing.",
            "in": "query",
            "name": "date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Without date_of_expiry: include expirations up to this many days away (default 30).",
            "in": "query",
            "name": "max_dte",
            "required": false,
            "schema": {
              "maximum": 1000,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Maximum rows to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 1000,
              "maximum": 2500,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Opaque cursor returned as pagination.next_cursor_id; resumes the same query on the next page.",
            "in": "query",
            "name": "cursor_id",
            "required": false,
            "schema": {
              "maxLength": 1024,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "option_symbol": "SPXW  261016C05800000",
                      "underlying_symbol": "SPXW",
                      "date_of_expiry": "2026-10-16",
                      "strike": 5800,
                      "contract_type": "call"
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "opra"
                  },
                  "pagination": {
                    "count": 1,
                    "has_more": false,
                    "limit": 1000,
                    "next_cursor_id": null,
                    "next_url": null
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/OptionsContractsRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "required": [
                    "data",
                    "meta",
                    "pagination"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Contracts of an underlying: those listed now, or those quoted on a past date.",
        "tags": [
          "options"
        ],
        "x-dataset": "options",
        "x-history-params": [
          "date"
        ],
        "x-paginated": true,
        "x-streamable": true
      }
    },
    "/v1/options/expirations": {
      "get": {
        "description": "Every listed expiration with days to expiry, settlement style, open interest, volume, the forward, at-the-money implied volatility and the expected move. SPX returns both the SPX (monthly, AM) and SPXW (weekly and daily, PM) roots; SPXW only the weekly root.",
        "operationId": "optionsExpirations",
        "parameters": [
          {
            "description": "Option root: SPX (both roots), SPXW, QQQ, NDXP, RUTW, XSP ...",
            "in": "query",
            "name": "underlying_symbol",
            "required": true,
            "schema": {
              "maxLength": 8,
              "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "atm_implied_volatility": 0.142,
                      "contracts": 612,
                      "date_of_expiry": "2026-10-16",
                      "days_to_expiry": 0,
                      "expected_move": 24.6,
                      "expired": false,
                      "expires_at": 1760644800000,
                      "forward": 6021.4,
                      "forward_method": "parity",
                      "open_interest_call": 41200,
                      "open_interest_put": 52800,
                      "settlement": "pm",
                      "strike_max": 7500,
                      "strike_min": 4500,
                      "strike_step": 5,
                      "underlying_symbol": "SPXW",
                      "volume_call": 183000,
                      "volume_put": 201000
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "opra"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/OptionsExpirationsRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Listed expirations of an underlying.",
        "tags": [
          "options"
        ],
        "x-dataset": "options"
      }
    },
    "/v1/options/exposure/by-expiration": {
      "get": {
        "description": "The modeled dealer exposure of each listed expiration for calls, puts and net, with the open interest, the roots that contribute and the totals. An SPX third-Friday expiration combines the SPX and SPXW roots. Dealer positioning is a model, not observed: with classic_oi the dealer is assumed long the calls and short the puts of the open interest, with flow_adjusted the classified prints since the open interest date adjust it. Public open interest does not identify who holds a position, so the values are estimates of exposure under that assumption.",
        "operationId": "optionsExposureByExpiration",
        "parameters": [
          {
            "description": "Option root or family: SPX covers the SPX and SPXW roots, SPXW only the weekly root, QQQ, NDXP, RUTW, XSP ...",
            "in": "query",
            "name": "underlying_symbol",
            "required": true,
            "schema": {
              "maxLength": 8,
              "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
              "type": "string"
            }
          },
          {
            "description": "Trading date (YYYY-MM-DD). Default: the current session, else the most recent completed one.",
            "in": "query",
            "name": "date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Trading session: rth is the regular session, gth the overnight (global trading hours) session before the trading date. Overnight data requires the Pro plan and exists only for underlyings with an overnight session; GET /v1/options/sessions shows which.",
            "in": "query",
            "name": "session",
            "required": false,
            "schema": {
              "default": "rth",
              "enum": [
                "rth",
                "gth"
              ],
              "type": "string"
            }
          },
          {
            "description": "Calls or puts. Omit for both.",
            "in": "query",
            "name": "contract_type",
            "required": false,
            "schema": {
              "enum": [
                "call",
                "put"
              ],
              "type": "string"
            }
          },
          {
            "description": "Only this expiration.",
            "in": "query",
            "name": "date_of_expiry",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Only these expirations, comma separated (YYYY-MM-DD), at most 64. Unlisted dates are ignored.",
            "explode": false,
            "in": "query",
            "name": "expirations",
            "required": false,
            "schema": {
              "items": {
                "maxLength": 128,
                "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$",
                "type": "string"
              },
              "maxItems": 64,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Expiration set: 0dte, 1dte, weekly (within 7 days), monthly (third-Friday expirations), lte30 or lte90 (within 30 or 90 days).",
            "in": "query",
            "name": "expiry_mode",
            "required": false,
            "schema": {
              "enum": [
                "0dte",
                "1dte",
                "weekly",
                "monthly",
                "lte30",
                "lte90"
              ],
              "type": "string"
            }
          },
          {
            "description": "Minimum days to expiration (0 = expires on the trading date).",
            "in": "query",
            "name": "min_dte",
            "required": false,
            "schema": {
              "maximum": 3650,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Maximum days to expiration.",
            "in": "query",
            "name": "max_dte",
            "required": false,
            "schema": {
              "maximum": 3650,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Lowest strike in dollars.",
            "in": "query",
            "name": "min_strike",
            "required": false,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 1000000,
              "type": "number"
            }
          },
          {
            "description": "Highest strike in dollars.",
            "in": "query",
            "name": "max_strike",
            "required": false,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 1000000,
              "type": "number"
            }
          },
          {
            "description": "This many listed strikes either side of the strike nearest the underlying price.",
            "in": "query",
            "name": "strikes_around",
            "required": false,
            "schema": {
              "maximum": 500,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Strikes within this percent of the underlying price.",
            "in": "query",
            "name": "strike_percent",
            "required": false,
            "schema": {
              "maximum": 100,
              "minimum": 0.1,
              "type": "number"
            }
          },
          {
            "description": "The exposure measured: gamma, delta, vanna or charm.",
            "in": "query",
            "name": "greek",
            "required": false,
            "schema": {
              "default": "gamma",
              "enum": [
                "gamma",
                "delta",
                "vanna",
                "charm"
              ],
              "type": "string"
            }
          },
          {
            "description": "Scale of the values: per_percent (dollars of dealer hedging per 1% move of the underlying), per_dollar (per $1 move) or raw (shares, or per unit of the greek).",
            "in": "query",
            "name": "unit",
            "required": false,
            "schema": {
              "default": "per_percent",
              "enum": [
                "per_percent",
                "per_dollar",
                "raw"
              ],
              "type": "string"
            }
          },
          {
            "description": "Dealer positioning model: classic_oi (open interest, calls long and puts short) or flow_adjusted (adjusted by classified prints since the open interest date).",
            "in": "query",
            "name": "model",
            "required": false,
            "schema": {
              "default": "classic_oi",
              "enum": [
                "classic_oi",
                "flow_adjusted"
              ],
              "type": "string"
            }
          },
          {
            "description": "dealer (default) or customer, which negates the values only.",
            "in": "query",
            "name": "perspective",
            "required": false,
            "schema": {
              "default": "dealer",
              "enum": [
                "dealer",
                "customer"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "expirations": [
                      {
                        "call_exposure": 5300000000,
                        "call_open_interest": 30000,
                        "date_of_expiry": "2026-10-16",
                        "days_to_expiry": 0,
                        "net_exposure": -370000000,
                        "put_exposure": -5700000000,
                        "put_open_interest": 33250,
                        "roots": [
                          "SPXW"
                        ]
                      }
                    ],
                    "greek": "gamma",
                    "model": "classic_oi",
                    "perspective": "dealer",
                    "positioning_model": "oi_signed_proxy-v1",
                    "roots": [
                      "SPX",
                      "SPXW"
                    ],
                    "session": "rth",
                    "totals": {
                      "absolute": 28800000000,
                      "call": 13800000000,
                      "net": -1200000000,
                      "put": -15000000000
                    },
                    "trading_date": "2026-10-16",
                    "underlying_symbol": "SPX",
                    "unit": "per_percent",
                    "unit_label": "usd_per_pct",
                    "valuation": {
                      "chain_timestamp": 1792160995000,
                      "open_interest_date": "2026-10-15",
                      "risk_free_rate": 0.0412,
                      "timestamp": 1792161000000,
                      "underlying_price": 6021.4,
                      "underlying_stale": false,
                      "underlying_timestamp": 1792160999000
                    }
                  },
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "opra"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/OptionsExposureByExpirationRow"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Modeled dealer gamma, delta, vanna or charm exposure by expiration.",
        "tags": [
          "options"
        ],
        "x-dataset": "options",
        "x-history-params": [
          "date"
        ],
        "x-mcp": true,
        "x-overnight": true,
        "x-streamable": true
      }
    },
    "/v1/options/exposure/by-strike": {
      "get": {
        "description": "The modeled dealer exposure of each strike for calls, puts and net, the open interest behind it, the totals, and the key strikes: the call wall (largest positive call exposure), the put wall (largest negative put exposure), the strike with the largest absolute exposure and the strikes of the largest positive and negative net exposure. Dealer positioning is a model, not observed: with classic_oi the dealer is assumed long the calls and short the puts of the open interest, with flow_adjusted the classified prints since the open interest date adjust it. Public open interest does not identify who holds a position, so the values are estimates of exposure under that assumption. Contracts the model cannot value (no implied volatility or forward) are left out and counted in meta.coverage.",
        "operationId": "optionsExposureByStrike",
        "parameters": [
          {
            "description": "Option root or family: SPX covers the SPX and SPXW roots, SPXW only the weekly root, QQQ, NDXP, RUTW, XSP ...",
            "in": "query",
            "name": "underlying_symbol",
            "required": true,
            "schema": {
              "maxLength": 8,
              "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
              "type": "string"
            }
          },
          {
            "description": "Trading date (YYYY-MM-DD). Default: the current session, else the most recent completed one.",
            "in": "query",
            "name": "date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Trading session: rth is the regular session, gth the overnight (global trading hours) session before the trading date. Overnight data requires the Pro plan and exists only for underlyings with an overnight session; GET /v1/options/sessions shows which.",
            "in": "query",
            "name": "session",
            "required": false,
            "schema": {
              "default": "rth",
              "enum": [
                "rth",
                "gth"
              ],
              "type": "string"
            }
          },
          {
            "description": "Calls or puts. Omit for both.",
            "in": "query",
            "name": "contract_type",
            "required": false,
            "schema": {
              "enum": [
                "call",
                "put"
              ],
              "type": "string"
            }
          },
          {
            "description": "Only this expiration.",
            "in": "query",
            "name": "date_of_expiry",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Only these expirations, comma separated (YYYY-MM-DD), at most 64. Unlisted dates are ignored.",
            "explode": false,
            "in": "query",
            "name": "expirations",
            "required": false,
            "schema": {
              "items": {
                "maxLength": 128,
                "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$",
                "type": "string"
              },
              "maxItems": 64,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Expiration set: 0dte, 1dte, weekly (within 7 days), monthly (third-Friday expirations), lte30 or lte90 (within 30 or 90 days).",
            "in": "query",
            "name": "expiry_mode",
            "required": false,
            "schema": {
              "enum": [
                "0dte",
                "1dte",
                "weekly",
                "monthly",
                "lte30",
                "lte90"
              ],
              "type": "string"
            }
          },
          {
            "description": "Minimum days to expiration (0 = expires on the trading date).",
            "in": "query",
            "name": "min_dte",
            "required": false,
            "schema": {
              "maximum": 3650,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Maximum days to expiration.",
            "in": "query",
            "name": "max_dte",
            "required": false,
            "schema": {
              "maximum": 3650,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Lowest strike in dollars.",
            "in": "query",
            "name": "min_strike",
            "required": false,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 1000000,
              "type": "number"
            }
          },
          {
            "description": "Highest strike in dollars.",
            "in": "query",
            "name": "max_strike",
            "required": false,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 1000000,
              "type": "number"
            }
          },
          {
            "description": "This many listed strikes either side of the strike nearest the underlying price.",
            "in": "query",
            "name": "strikes_around",
            "required": false,
            "schema": {
              "maximum": 500,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Strikes within this percent of the underlying price.",
            "in": "query",
            "name": "strike_percent",
            "required": false,
            "schema": {
              "maximum": 100,
              "minimum": 0.1,
              "type": "number"
            }
          },
          {
            "description": "The exposure measured: gamma, delta, vanna or charm.",
            "in": "query",
            "name": "greek",
            "required": false,
            "schema": {
              "default": "gamma",
              "enum": [
                "gamma",
                "delta",
                "vanna",
                "charm"
              ],
              "type": "string"
            }
          },
          {
            "description": "Scale of the values: per_percent (dollars of dealer hedging per 1% move of the underlying), per_dollar (per $1 move) or raw (shares, or per unit of the greek).",
            "in": "query",
            "name": "unit",
            "required": false,
            "schema": {
              "default": "per_percent",
              "enum": [
                "per_percent",
                "per_dollar",
                "raw"
              ],
              "type": "string"
            }
          },
          {
            "description": "Dealer positioning model: classic_oi (open interest, calls long and puts short) or flow_adjusted (adjusted by classified prints since the open interest date).",
            "in": "query",
            "name": "model",
            "required": false,
            "schema": {
              "default": "classic_oi",
              "enum": [
                "classic_oi",
                "flow_adjusted"
              ],
              "type": "string"
            }
          },
          {
            "description": "dealer (default) or customer, which negates the values only.",
            "in": "query",
            "name": "perspective",
            "required": false,
            "schema": {
              "default": "dealer",
              "enum": [
                "dealer",
                "customer"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "greek": "gamma",
                    "levels": {
                      "call_wall": 6050,
                      "largest_absolute_strike": 6000,
                      "major_negative": 5950,
                      "major_positive": 6050,
                      "put_wall": 5950
                    },
                    "model": "classic_oi",
                    "perspective": "dealer",
                    "positioning_model": "oi_signed_proxy-v1",
                    "roots": [
                      "SPX",
                      "SPXW"
                    ],
                    "session": "rth",
                    "strikes": [
                      {
                        "call_exposure": 6050000000,
                        "call_open_interest": 22440,
                        "net_exposure": -420000000,
                        "put_exposure": -6470000000,
                        "put_open_interest": 23940,
                        "strike": 6000
                      }
                    ],
                    "totals": {
                      "absolute": 28800000000,
                      "call": 13800000000,
                      "net": -1200000000,
                      "put": -15000000000
                    },
                    "trading_date": "2026-10-16",
                    "underlying_symbol": "SPX",
                    "unit": "per_percent",
                    "unit_label": "usd_per_pct",
                    "valuation": {
                      "chain_timestamp": 1792160995000,
                      "open_interest_date": "2026-10-15",
                      "risk_free_rate": 0.0412,
                      "timestamp": 1792161000000,
                      "underlying_price": 6021.4,
                      "underlying_stale": false,
                      "underlying_timestamp": 1792160999000
                    }
                  },
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "opra"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/OptionsExposureByStrikeRow"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Modeled dealer gamma, delta, vanna or charm exposure by strike.",
        "tags": [
          "options"
        ],
        "x-dataset": "options",
        "x-history-params": [
          "date"
        ],
        "x-mcp": true,
        "x-overnight": true,
        "x-streamable": true
      }
    },
    "/v1/options/exposure/forecast": {
      "get": {
        "description": "The modeled gamma levels (gamma flip, call wall, put wall, largest cell, largest absolute gamma strike) recomputed as of each horizon with the expiring contracts removed and time decay applied, the net exposure at the current price, a one- and two-standard-deviation cone for the underlying from its implied volatility, and how often the levels have held in the platform's own history. The state hint (pin, grind, volatile or undetermined) is a heuristic and is not calibrated; nothing here is a prediction of price. Dealer positioning is a model, not observed: with classic_oi the dealer is assumed long the calls and short the puts of the open interest, with flow_adjusted the classified prints since the open interest date adjust it. Public open interest does not identify who holds a position, so the values are estimates of exposure under that assumption.",
        "operationId": "optionsExposureForecast",
        "parameters": [
          {
            "description": "Option root or family: SPX covers the SPX and SPXW roots, SPXW only the weekly root, QQQ, NDXP, RUTW, XSP ...",
            "in": "query",
            "name": "underlying_symbol",
            "required": true,
            "schema": {
              "maxLength": 8,
              "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
              "type": "string"
            }
          },
          {
            "description": "Trading date (YYYY-MM-DD). Default: the current session, else the most recent completed one.",
            "in": "query",
            "name": "date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Trading session: rth is the regular session, gth the overnight (global trading hours) session before the trading date. Overnight data requires the Pro plan and exists only for underlyings with an overnight session; GET /v1/options/sessions shows which.",
            "in": "query",
            "name": "session",
            "required": false,
            "schema": {
              "default": "rth",
              "enum": [
                "rth",
                "gth"
              ],
              "type": "string"
            }
          },
          {
            "description": "Calls or puts. Omit for both.",
            "in": "query",
            "name": "contract_type",
            "required": false,
            "schema": {
              "enum": [
                "call",
                "put"
              ],
              "type": "string"
            }
          },
          {
            "description": "Only this expiration.",
            "in": "query",
            "name": "date_of_expiry",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Only these expirations, comma separated (YYYY-MM-DD), at most 64. Unlisted dates are ignored.",
            "explode": false,
            "in": "query",
            "name": "expirations",
            "required": false,
            "schema": {
              "items": {
                "maxLength": 128,
                "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$",
                "type": "string"
              },
              "maxItems": 64,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Expiration set: 0dte, 1dte, weekly (within 7 days), monthly (third-Friday expirations), lte30 or lte90 (within 30 or 90 days).",
            "in": "query",
            "name": "expiry_mode",
            "required": false,
            "schema": {
              "enum": [
                "0dte",
                "1dte",
                "weekly",
                "monthly",
                "lte30",
                "lte90"
              ],
              "type": "string"
            }
          },
          {
            "description": "Minimum days to expiration (0 = expires on the trading date).",
            "in": "query",
            "name": "min_dte",
            "required": false,
            "schema": {
              "maximum": 3650,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Maximum days to expiration.",
            "in": "query",
            "name": "max_dte",
            "required": false,
            "schema": {
              "maximum": 3650,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Scale of the exposure values.",
            "in": "query",
            "name": "unit",
            "required": false,
            "schema": {
              "default": "per_percent",
              "enum": [
                "per_percent",
                "per_dollar",
                "raw"
              ],
              "type": "string"
            }
          },
          {
            "description": "Dealer positioning model.",
            "in": "query",
            "name": "model",
            "required": false,
            "schema": {
              "default": "classic_oi",
              "enum": [
                "classic_oi",
                "flow_adjusted"
              ],
              "type": "string"
            }
          },
          {
            "description": "Forecast horizons: 30, 60, 90, 120 (minutes ahead) and close. Default all.",
            "explode": false,
            "in": "query",
            "name": "horizons",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "30",
                  "60",
                  "90",
                  "120",
                  "close"
                ],
                "type": "string"
              },
              "maxItems": 5,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "cone_model": {
                      "implied_volatility": 0.142,
                      "implied_volatility_expiry": "2026-10-16",
                      "method": "lognormal_sticky_iv_variance_clock",
                      "rth_variance_share": 0.8,
                      "total_variance": 0.00052
                    },
                    "empirical": {
                      "method": "empirical_state_persistence",
                      "move_sessions": 18,
                      "state_sessions": 18
                    },
                    "horizons": [
                      {
                        "call_wall": 6050,
                        "cone": {
                          "one_sigma": [
                            6003.1,
                            6039.7
                          ],
                          "two_sigma": [
                            5984.8,
                            6058
                          ]
                        },
                        "expired_contracts": 26,
                        "gamma_flip": 5934.5,
                        "hold": {
                          "band": [
                            0.41,
                            0.82
                          ],
                          "rate": 0.64,
                          "samples": 18,
                          "strength": "weak"
                        },
                        "hold_reason": null,
                        "label": "60",
                        "largest_absolute_gamma_strike": 6000,
                        "largest_cell_strike": 6000,
                        "minutes": 60,
                        "net_exposure_at_underlying_price": -210000000,
                        "put_wall": 5950,
                        "timestamp": 1792164600000,
                        "typical_move": {
                          "percent": 0.21,
                          "points": 12.6,
                          "samples": 18
                        }
                      }
                    ],
                    "levels_now": {
                      "call_wall": 6050,
                      "gamma_flip": 5934.5,
                      "largest_absolute_gamma_strike": 6000,
                      "largest_cell_strike": 6000,
                      "put_wall": 5950
                    },
                    "session": "rth",
                    "state_hint": {
                      "calibrated": false,
                      "label": "grind",
                      "reasons": [
                        "positive gamma above the underlying price"
                      ]
                    },
                    "trading_date": "2026-10-16",
                    "underlying_price": 6021.4,
                    "underlying_symbol": "SPX",
                    "valuation": {
                      "chain_timestamp": 1792160995000,
                      "open_interest_date": "2026-10-15",
                      "risk_free_rate": 0.0412,
                      "timestamp": 1792161000000,
                      "underlying_price": 6021.4,
                      "underlying_stale": false,
                      "underlying_timestamp": 1792160999000
                    }
                  },
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "opra"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/OptionsExposureForecastRow"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Modeled levels repriced at intraday horizons with a statistical cone.",
        "tags": [
          "options"
        ],
        "x-dataset": "options",
        "x-history-params": [
          "date"
        ],
        "x-overnight": true,
        "x-streamable": true
      }
    },
    "/v1/options/exposure/heatmap": {
      "get": {
        "description": "A grid of cells, one per strike and expiration, for a modeled exposure (gamma, delta, vanna, charm) or for open interest, volume, premium, net premium or trades; net combines calls and puts, call and put show one side. largest_cell is the cell with the largest absolute value. The window is 40 strikes either side of the underlying price and 12 expirations unless set. Dealer positioning is a model, not observed: with classic_oi the dealer is assumed long the calls and short the puts of the open interest, with flow_adjusted the classified prints since the open interest date adjust it. Public open interest does not identify who holds a position, so the values are estimates of exposure under that assumption. Cells without a listed contract are omitted. strikes_around cannot be combined with strike bounds.",
        "operationId": "optionsExposureHeatmap",
        "parameters": [
          {
            "description": "Option root or family: SPX covers the SPX and SPXW roots, SPXW only the weekly root, QQQ, NDXP, RUTW, XSP ...",
            "in": "query",
            "name": "underlying_symbol",
            "required": true,
            "schema": {
              "maxLength": 8,
              "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
              "type": "string"
            }
          },
          {
            "description": "Trading date (YYYY-MM-DD). Default: the current session, else the most recent completed one.",
            "in": "query",
            "name": "date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Trading session: rth is the regular session, gth the overnight (global trading hours) session before the trading date. Overnight data requires the Pro plan and exists only for underlyings with an overnight session; GET /v1/options/sessions shows which.",
            "in": "query",
            "name": "session",
            "required": false,
            "schema": {
              "default": "rth",
              "enum": [
                "rth",
                "gth"
              ],
              "type": "string"
            }
          },
          {
            "description": "Calls or puts. Omit for both.",
            "in": "query",
            "name": "contract_type",
            "required": false,
            "schema": {
              "enum": [
                "call",
                "put"
              ],
              "type": "string"
            }
          },
          {
            "description": "Only this expiration.",
            "in": "query",
            "name": "date_of_expiry",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Only these expirations, comma separated (YYYY-MM-DD), at most 64. Unlisted dates are ignored.",
            "explode": false,
            "in": "query",
            "name": "expirations",
            "required": false,
            "schema": {
              "items": {
                "maxLength": 128,
                "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$",
                "type": "string"
              },
              "maxItems": 64,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Expiration set: 0dte, 1dte, weekly (within 7 days), monthly (third-Friday expirations), lte30 or lte90 (within 30 or 90 days).",
            "in": "query",
            "name": "expiry_mode",
            "required": false,
            "schema": {
              "enum": [
                "0dte",
                "1dte",
                "weekly",
                "monthly",
                "lte30",
                "lte90"
              ],
              "type": "string"
            }
          },
          {
            "description": "Minimum days to expiration (0 = expires on the trading date).",
            "in": "query",
            "name": "min_dte",
            "required": false,
            "schema": {
              "maximum": 3650,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Maximum days to expiration.",
            "in": "query",
            "name": "max_dte",
            "required": false,
            "schema": {
              "maximum": 3650,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Lowest strike in dollars.",
            "in": "query",
            "name": "min_strike",
            "required": false,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 1000000,
              "type": "number"
            }
          },
          {
            "description": "Highest strike in dollars.",
            "in": "query",
            "name": "max_strike",
            "required": false,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 1000000,
              "type": "number"
            }
          },
          {
            "description": "This many listed strikes either side of the strike nearest the underlying price (up to 200).",
            "in": "query",
            "name": "strikes_around",
            "required": false,
            "schema": {
              "default": 40,
              "maximum": 200,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Number of expirations (columns) in the grid.",
            "in": "query",
            "name": "max_expirations",
            "required": false,
            "schema": {
              "default": 12,
              "maximum": 64,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Index of the first expiration of the grid among the selected ones.",
            "in": "query",
            "name": "expiration_offset",
            "required": false,
            "schema": {
              "maximum": 400,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Cell value: gamma, delta, vanna or charm exposure, or open_interest, volume, premium, net_premium or trades.",
            "in": "query",
            "name": "metric",
            "required": false,
            "schema": {
              "default": "gamma",
              "enum": [
                "gamma",
                "delta",
                "vanna",
                "charm",
                "open_interest",
                "volume",
                "premium",
                "net_premium",
                "trades"
              ],
              "type": "string"
            }
          },
          {
            "description": "net (calls plus puts; calls minus puts for open interest, volume, premium and trades), call or put.",
            "in": "query",
            "name": "leg",
            "required": false,
            "schema": {
              "default": "net",
              "enum": [
                "net",
                "call",
                "put"
              ],
              "type": "string"
            }
          },
          {
            "description": "Scale of the values: per_percent (dollars of dealer hedging per 1% move of the underlying), per_dollar (per $1 move) or raw (shares, or per unit of the greek).",
            "in": "query",
            "name": "unit",
            "required": false,
            "schema": {
              "default": "per_percent",
              "enum": [
                "per_percent",
                "per_dollar",
                "raw"
              ],
              "type": "string"
            }
          },
          {
            "description": "Dealer positioning model: classic_oi (open interest, calls long and puts short) or flow_adjusted (adjusted by classified prints since the open interest date).",
            "in": "query",
            "name": "model",
            "required": false,
            "schema": {
              "default": "classic_oi",
              "enum": [
                "classic_oi",
                "flow_adjusted"
              ],
              "type": "string"
            }
          },
          {
            "description": "dealer (default) or customer, which negates the values only.",
            "in": "query",
            "name": "perspective",
            "required": false,
            "schema": {
              "default": "dealer",
              "enum": [
                "dealer",
                "customer"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "cells": [
                      {
                        "date_of_expiry": "2026-10-16",
                        "days_to_expiry": 0,
                        "strike": 6000,
                        "value": -338000000
                      }
                    ],
                    "expiration_window": {
                      "count": 12,
                      "offset": 0,
                      "total_expirations": 31
                    },
                    "greek": "gamma",
                    "largest_cell": {
                      "date_of_expiry": "2026-10-16",
                      "strike": 6000,
                      "value": -338000000
                    },
                    "leg": "net",
                    "maximum": 10300000,
                    "metric": "gamma",
                    "minimum": -338000000,
                    "model": "classic_oi",
                    "perspective": "dealer",
                    "positioning_model": "oi_signed_proxy-v1",
                    "roots": [
                      "SPX",
                      "SPXW"
                    ],
                    "session": "rth",
                    "strike_range": {
                      "highest_strike": 6600,
                      "lowest_strike": 5400,
                      "total_strikes": 121
                    },
                    "trading_date": "2026-10-16",
                    "underlying_symbol": "SPX",
                    "unit": "per_percent",
                    "unit_label": "usd_per_pct",
                    "valuation": {
                      "chain_timestamp": 1792160995000,
                      "open_interest_date": "2026-10-15",
                      "risk_free_rate": 0.0412,
                      "timestamp": 1792161000000,
                      "underlying_price": 6021.4,
                      "underlying_stale": false,
                      "underlying_timestamp": 1792160999000
                    }
                  },
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "opra"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/OptionsExposureHeatmapRow"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Strike by expiration grid of modeled exposure, open interest or flow.",
        "tags": [
          "options"
        ],
        "x-dataset": "options",
        "x-history-params": [
          "date"
        ],
        "x-mcp": true,
        "x-overnight": true,
        "x-streamable": true
      }
    },
    "/v1/options/exposure/history": {
      "get": {
        "description": "The net modeled dealer gamma exposure of the SPX or SPXW chain at each step of a window of at most 24 hours and 500 points, replayed from the chain and underlying price retained for the last seven days. A step the retained inputs cannot support (no chain, or inputs older than 60 seconds) is returned with available false and a reason, never filled in. The default window is the last hour; without the overnight entitlement it starts no earlier than 09:25 ET, and between 20:15 and 09:25 ET a request without start_time and end_time returns data_unavailable. A window that reaches into the overnight hours (20:15 to 09:25 ET) needs the overnight entitlement (API Pro). Exposure uses the classic open interest model: calls long and puts short, an assumption about dealer positioning and not an observation.",
        "operationId": "optionsExposureHistory",
        "parameters": [
          {
            "description": "SPX or SPXW (the retained history covers those roots only).",
            "in": "query",
            "name": "underlying_symbol",
            "required": true,
            "schema": {
              "maxLength": 8,
              "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
              "type": "string"
            }
          },
          {
            "description": "Start of the window (inclusive). Default: one hour before end_time.",
            "in": "query",
            "name": "start_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "End of the window (exclusive). Default: now.",
            "in": "query",
            "name": "end_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "Step: 1m, 5m, 15m, 30m or 1h.",
            "in": "query",
            "name": "interval",
            "required": false,
            "schema": {
              "default": "5m",
              "enum": [
                "1m",
                "5m",
                "15m",
                "30m",
                "1h"
              ],
              "type": "string"
            }
          },
          {
            "description": "Calls or puts. Omit for both.",
            "in": "query",
            "name": "contract_type",
            "required": false,
            "schema": {
              "enum": [
                "call",
                "put"
              ],
              "type": "string"
            }
          },
          {
            "description": "Only this expiration.",
            "in": "query",
            "name": "date_of_expiry",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Only expirations within this many days.",
            "in": "query",
            "name": "max_dte",
            "required": false,
            "schema": {
              "maximum": 3650,
              "minimum": 0,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "available": true,
                      "chain_timestamp": 1792160990000,
                      "net_exposure": -1200000000,
                      "reason": null,
                      "timestamp": 1792161000000,
                      "underlying_timestamp": 1792160999000
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "opra"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/OptionsExposureHistoryRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Net modeled gamma exposure through time (SPX and SPXW).",
        "tags": [
          "options"
        ],
        "x-dataset": "options",
        "x-history-params": [
          "start_time",
          "end_time"
        ],
        "x-overnight": true
      }
    },
    "/v1/options/exposure/intervals": {
      "get": {
        "description": "The modeled dealer exposure of every strike valued at the end of each interval of the session, as cells (timestamp, strike, value), with the underlying price at each valuation and the session's range. Intervals that could not be valued are omitted; buckets_filled and buckets_expected report how complete the day is. Sessions older than the retained timelines are not available. Dealer positioning is a model, not observed: with classic_oi the dealer is assumed long the calls and short the puts of the open interest, with flow_adjusted the classified prints since the open interest date adjust it. Public open interest does not identify who holds a position, so the values are estimates of exposure under that assumption.",
        "operationId": "optionsExposureIntervals",
        "parameters": [
          {
            "description": "Option root or family: SPX covers the SPX and SPXW roots, SPXW only the weekly root, QQQ, NDXP, RUTW, XSP ...",
            "in": "query",
            "name": "underlying_symbol",
            "required": true,
            "schema": {
              "maxLength": 8,
              "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
              "type": "string"
            }
          },
          {
            "description": "Trading date (YYYY-MM-DD). Default: the current session, else the most recent completed one.",
            "in": "query",
            "name": "date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Trading session: rth is the regular session, gth the overnight (global trading hours) session before the trading date. Overnight data requires the Pro plan and exists only for underlyings with an overnight session; GET /v1/options/sessions shows which.",
            "in": "query",
            "name": "session",
            "required": false,
            "schema": {
              "default": "rth",
              "enum": [
                "rth",
                "gth"
              ],
              "type": "string"
            }
          },
          {
            "description": "Calls or puts. Omit for both.",
            "in": "query",
            "name": "contract_type",
            "required": false,
            "schema": {
              "enum": [
                "call",
                "put"
              ],
              "type": "string"
            }
          },
          {
            "description": "Only this expiration.",
            "in": "query",
            "name": "date_of_expiry",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Only these expirations, comma separated (YYYY-MM-DD), at most 64. Unlisted dates are ignored.",
            "explode": false,
            "in": "query",
            "name": "expirations",
            "required": false,
            "schema": {
              "items": {
                "maxLength": 128,
                "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$",
                "type": "string"
              },
              "maxItems": 64,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Expiration set: 0dte, 1dte, weekly (within 7 days), monthly (third-Friday expirations), lte30 or lte90 (within 30 or 90 days).",
            "in": "query",
            "name": "expiry_mode",
            "required": false,
            "schema": {
              "enum": [
                "0dte",
                "1dte",
                "weekly",
                "monthly",
                "lte30",
                "lte90"
              ],
              "type": "string"
            }
          },
          {
            "description": "Minimum days to expiration (0 = expires on the trading date).",
            "in": "query",
            "name": "min_dte",
            "required": false,
            "schema": {
              "maximum": 3650,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Maximum days to expiration.",
            "in": "query",
            "name": "max_dte",
            "required": false,
            "schema": {
              "maximum": 3650,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Lowest strike in dollars.",
            "in": "query",
            "name": "min_strike",
            "required": false,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 1000000,
              "type": "number"
            }
          },
          {
            "description": "Highest strike in dollars.",
            "in": "query",
            "name": "max_strike",
            "required": false,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 1000000,
              "type": "number"
            }
          },
          {
            "description": "The exposure measured: gamma, delta, vanna or charm.",
            "in": "query",
            "name": "greek",
            "required": false,
            "schema": {
              "default": "gamma",
              "enum": [
                "gamma",
                "delta",
                "vanna",
                "charm"
              ],
              "type": "string"
            }
          },
          {
            "description": "Scale of the values: per_percent (dollars of dealer hedging per 1% move of the underlying), per_dollar (per $1 move) or raw (shares, or per unit of the greek).",
            "in": "query",
            "name": "unit",
            "required": false,
            "schema": {
              "default": "per_percent",
              "enum": [
                "per_percent",
                "per_dollar",
                "raw"
              ],
              "type": "string"
            }
          },
          {
            "description": "Dealer positioning model: classic_oi (open interest, calls long and puts short) or flow_adjusted (adjusted by classified prints since the open interest date).",
            "in": "query",
            "name": "model",
            "required": false,
            "schema": {
              "default": "classic_oi",
              "enum": [
                "classic_oi",
                "flow_adjusted"
              ],
              "type": "string"
            }
          },
          {
            "description": "dealer (default) or customer, which negates the values only.",
            "in": "query",
            "name": "perspective",
            "required": false,
            "schema": {
              "default": "dealer",
              "enum": [
                "dealer",
                "customer"
              ],
              "type": "string"
            }
          },
          {
            "description": "Bucket length: 1m, 5m, 15m, 30m or 1h.",
            "in": "query",
            "name": "interval",
            "required": false,
            "schema": {
              "default": "5m",
              "enum": [
                "1m",
                "5m",
                "15m",
                "30m",
                "1h"
              ],
              "type": "string"
            }
          },
          {
            "description": "value: the exposure at the end of each bucket; change: the difference from the previous bucket.",
            "in": "query",
            "name": "mode",
            "required": false,
            "schema": {
              "default": "value",
              "enum": [
                "value",
                "change"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "buckets_expected": 78,
                    "buckets_filled": 78,
                    "cells": [
                      {
                        "strike": 6000,
                        "timestamp": 1792161000000,
                        "value": -190000000
                      }
                    ],
                    "greek": "gamma",
                    "interval": "5m",
                    "max_absolute_value": 417000000,
                    "mode": "value",
                    "model": "classic_oi",
                    "perspective": "dealer",
                    "positioning_model": "oi_signed_proxy-v1",
                    "prices": [
                      {
                        "timestamp": 1792161000000,
                        "underlying_price": 6021.4
                      }
                    ],
                    "roots": [
                      "SPX",
                      "SPXW"
                    ],
                    "session": "rth",
                    "session_high": 6031.9,
                    "session_low": 6004.2,
                    "strikes": [
                      5950,
                      6000,
                      6050
                    ],
                    "trading_date": "2026-10-16",
                    "underlying_symbol": "SPX",
                    "unit": "per_percent",
                    "unit_label": "usd_per_pct",
                    "valuation": {
                      "chain_timestamp": 1792160995000,
                      "open_interest_date": "2026-10-15",
                      "risk_free_rate": 0.0412,
                      "timestamp": 1792161000000,
                      "underlying_price": 6021.4,
                      "underlying_stale": false,
                      "underlying_timestamp": 1792160999000
                    }
                  },
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "opra"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/OptionsExposureIntervalsRow"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Modeled exposure by strike at every interval of a session.",
        "tags": [
          "options"
        ],
        "x-dataset": "options",
        "x-history-params": [
          "date"
        ],
        "x-mcp": true,
        "x-overnight": true,
        "x-streamable": true
      }
    },
    "/v1/options/exposure/profile": {
      "get": {
        "description": "The net, call and put modeled dealer exposure if the underlying were at each price of a sweep around the current price, the contracts repriced with unchanged strikes and implied volatilities (sticky strike). zero_crossing is the swept price nearest the current price where the net exposure changes sign; for gamma it is the gamma flip level, a model-derived level and not an observed price.  Dealer positioning is a model, not observed: with classic_oi the dealer is assumed long the calls and short the puts of the open interest, with flow_adjusted the classified prints since the open interest date adjust it. Public open interest does not identify who holds a position, so the values are estimates of exposure under that assumption.",
        "operationId": "optionsExposureProfile",
        "parameters": [
          {
            "description": "Option root or family: SPX covers the SPX and SPXW roots, SPXW only the weekly root, QQQ, NDXP, RUTW, XSP ...",
            "in": "query",
            "name": "underlying_symbol",
            "required": true,
            "schema": {
              "maxLength": 8,
              "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
              "type": "string"
            }
          },
          {
            "description": "Trading date (YYYY-MM-DD). Default: the current session, else the most recent completed one.",
            "in": "query",
            "name": "date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Trading session: rth is the regular session, gth the overnight (global trading hours) session before the trading date. Overnight data requires the Pro plan and exists only for underlyings with an overnight session; GET /v1/options/sessions shows which.",
            "in": "query",
            "name": "session",
            "required": false,
            "schema": {
              "default": "rth",
              "enum": [
                "rth",
                "gth"
              ],
              "type": "string"
            }
          },
          {
            "description": "Calls or puts. Omit for both.",
            "in": "query",
            "name": "contract_type",
            "required": false,
            "schema": {
              "enum": [
                "call",
                "put"
              ],
              "type": "string"
            }
          },
          {
            "description": "Only this expiration.",
            "in": "query",
            "name": "date_of_expiry",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Only these expirations, comma separated (YYYY-MM-DD), at most 64. Unlisted dates are ignored.",
            "explode": false,
            "in": "query",
            "name": "expirations",
            "required": false,
            "schema": {
              "items": {
                "maxLength": 128,
                "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$",
                "type": "string"
              },
              "maxItems": 64,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Expiration set: 0dte, 1dte, weekly (within 7 days), monthly (third-Friday expirations), lte30 or lte90 (within 30 or 90 days).",
            "in": "query",
            "name": "expiry_mode",
            "required": false,
            "schema": {
              "enum": [
                "0dte",
                "1dte",
                "weekly",
                "monthly",
                "lte30",
                "lte90"
              ],
              "type": "string"
            }
          },
          {
            "description": "Minimum days to expiration (0 = expires on the trading date).",
            "in": "query",
            "name": "min_dte",
            "required": false,
            "schema": {
              "maximum": 3650,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Maximum days to expiration.",
            "in": "query",
            "name": "max_dte",
            "required": false,
            "schema": {
              "maximum": 3650,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "The exposure measured: gamma, delta, vanna or charm.",
            "in": "query",
            "name": "greek",
            "required": false,
            "schema": {
              "default": "gamma",
              "enum": [
                "gamma",
                "delta",
                "vanna",
                "charm"
              ],
              "type": "string"
            }
          },
          {
            "description": "Scale of the values: per_percent (dollars of dealer hedging per 1% move of the underlying), per_dollar (per $1 move) or raw (shares, or per unit of the greek).",
            "in": "query",
            "name": "unit",
            "required": false,
            "schema": {
              "default": "per_percent",
              "enum": [
                "per_percent",
                "per_dollar",
                "raw"
              ],
              "type": "string"
            }
          },
          {
            "description": "Dealer positioning model: classic_oi (open interest, calls long and puts short) or flow_adjusted (adjusted by classified prints since the open interest date).",
            "in": "query",
            "name": "model",
            "required": false,
            "schema": {
              "default": "classic_oi",
              "enum": [
                "classic_oi",
                "flow_adjusted"
              ],
              "type": "string"
            }
          },
          {
            "description": "dealer (default) or customer, which negates the values only.",
            "in": "query",
            "name": "perspective",
            "required": false,
            "schema": {
              "default": "dealer",
              "enum": [
                "dealer",
                "customer"
              ],
              "type": "string"
            }
          },
          {
            "description": "Half-width of the sweep in percent of the underlying price. Default: 20 for index and ETF options.",
            "in": "query",
            "name": "range_percent",
            "required": false,
            "schema": {
              "maximum": 50,
              "minimum": 1,
              "type": "number"
            }
          },
          {
            "description": "Intervals of the sweep (steps + 1 points).",
            "in": "query",
            "name": "steps",
            "required": false,
            "schema": {
              "default": 256,
              "maximum": 512,
              "minimum": 32,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "greek": "gamma",
                    "model": "classic_oi",
                    "perspective": "dealer",
                    "points": [
                      {
                        "call_exposure": 1100000000,
                        "net_exposure": 320000000,
                        "put_exposure": -780000000,
                        "underlying_price": 5800
                      }
                    ],
                    "positioning_model": "oi_signed_proxy-v1",
                    "roots": [
                      "SPX",
                      "SPXW"
                    ],
                    "session": "rth",
                    "side_at_ends": {
                      "high": -1,
                      "low": 1
                    },
                    "trading_date": "2026-10-16",
                    "underlying_price": 6021.4,
                    "underlying_symbol": "SPX",
                    "unit": "per_percent",
                    "unit_label": "usd_per_pct",
                    "valuation": {
                      "chain_timestamp": 1792160995000,
                      "open_interest_date": "2026-10-15",
                      "risk_free_rate": 0.0412,
                      "timestamp": 1792161000000,
                      "underlying_price": 6021.4,
                      "underlying_stale": false,
                      "underlying_timestamp": 1792160999000
                    },
                    "zero_crossing": 5934.5,
                    "zero_crossing_excluding_0dte": 5961,
                    "zero_crossings": [
                      5934.5
                    ]
                  },
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "opra"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/OptionsExposureProfileRow"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Modeled exposure repriced over a sweep of underlying prices, with zero crossings.",
        "tags": [
          "options"
        ],
        "x-dataset": "options",
        "x-history-params": [
          "date"
        ],
        "x-overnight": true,
        "x-streamable": true
      }
    },
    "/v1/options/exposure/surface": {
      "get": {
        "description": "The net modeled dealer exposure of one greek on a wide strike by expiration grid, 100 strikes either side of the underlying price and 24 expirations by default, as a list of cells suited to a surface plot. For a narrow window, other measures or the call and put sides use /v1/options/exposure/heatmap. Dealer positioning is a model, not observed: with classic_oi the dealer is assumed long the calls and short the puts of the open interest, with flow_adjusted the classified prints since the open interest date adjust it. Public open interest does not identify who holds a position, so the values are estimates of exposure under that assumption.",
        "operationId": "optionsExposureSurface",
        "parameters": [
          {
            "description": "Option root or family: SPX covers the SPX and SPXW roots, SPXW only the weekly root, QQQ, NDXP, RUTW, XSP ...",
            "in": "query",
            "name": "underlying_symbol",
            "required": true,
            "schema": {
              "maxLength": 8,
              "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
              "type": "string"
            }
          },
          {
            "description": "Trading date (YYYY-MM-DD). Default: the current session, else the most recent completed one.",
            "in": "query",
            "name": "date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Trading session: rth is the regular session, gth the overnight (global trading hours) session before the trading date. Overnight data requires the Pro plan and exists only for underlyings with an overnight session; GET /v1/options/sessions shows which.",
            "in": "query",
            "name": "session",
            "required": false,
            "schema": {
              "default": "rth",
              "enum": [
                "rth",
                "gth"
              ],
              "type": "string"
            }
          },
          {
            "description": "Calls or puts. Omit for both.",
            "in": "query",
            "name": "contract_type",
            "required": false,
            "schema": {
              "enum": [
                "call",
                "put"
              ],
              "type": "string"
            }
          },
          {
            "description": "Only this expiration.",
            "in": "query",
            "name": "date_of_expiry",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Only these expirations, comma separated (YYYY-MM-DD), at most 64. Unlisted dates are ignored.",
            "explode": false,
            "in": "query",
            "name": "expirations",
            "required": false,
            "schema": {
              "items": {
                "maxLength": 128,
                "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$",
                "type": "string"
              },
              "maxItems": 64,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Expiration set: 0dte, 1dte, weekly (within 7 days), monthly (third-Friday expirations), lte30 or lte90 (within 30 or 90 days).",
            "in": "query",
            "name": "expiry_mode",
            "required": false,
            "schema": {
              "enum": [
                "0dte",
                "1dte",
                "weekly",
                "monthly",
                "lte30",
                "lte90"
              ],
              "type": "string"
            }
          },
          {
            "description": "Minimum days to expiration (0 = expires on the trading date).",
            "in": "query",
            "name": "min_dte",
            "required": false,
            "schema": {
              "maximum": 3650,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Maximum days to expiration.",
            "in": "query",
            "name": "max_dte",
            "required": false,
            "schema": {
              "maximum": 3650,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Lowest strike in dollars.",
            "in": "query",
            "name": "min_strike",
            "required": false,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 1000000,
              "type": "number"
            }
          },
          {
            "description": "Highest strike in dollars.",
            "in": "query",
            "name": "max_strike",
            "required": false,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 1000000,
              "type": "number"
            }
          },
          {
            "description": "This many listed strikes either side of the strike nearest the underlying price (up to 200).",
            "in": "query",
            "name": "strikes_around",
            "required": false,
            "schema": {
              "default": 100,
              "maximum": 200,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Number of expirations (columns) in the grid.",
            "in": "query",
            "name": "max_expirations",
            "required": false,
            "schema": {
              "default": 24,
              "maximum": 64,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Index of the first expiration of the grid among the selected ones.",
            "in": "query",
            "name": "expiration_offset",
            "required": false,
            "schema": {
              "maximum": 400,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "The exposure measured: gamma, delta, vanna or charm.",
            "in": "query",
            "name": "greek",
            "required": false,
            "schema": {
              "default": "gamma",
              "enum": [
                "gamma",
                "delta",
                "vanna",
                "charm"
              ],
              "type": "string"
            }
          },
          {
            "description": "Scale of the values: per_percent (dollars of dealer hedging per 1% move of the underlying), per_dollar (per $1 move) or raw (shares, or per unit of the greek).",
            "in": "query",
            "name": "unit",
            "required": false,
            "schema": {
              "default": "per_percent",
              "enum": [
                "per_percent",
                "per_dollar",
                "raw"
              ],
              "type": "string"
            }
          },
          {
            "description": "Dealer positioning model: classic_oi (open interest, calls long and puts short) or flow_adjusted (adjusted by classified prints since the open interest date).",
            "in": "query",
            "name": "model",
            "required": false,
            "schema": {
              "default": "classic_oi",
              "enum": [
                "classic_oi",
                "flow_adjusted"
              ],
              "type": "string"
            }
          },
          {
            "description": "dealer (default) or customer, which negates the values only.",
            "in": "query",
            "name": "perspective",
            "required": false,
            "schema": {
              "default": "dealer",
              "enum": [
                "dealer",
                "customer"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "cells": [
                      {
                        "date_of_expiry": "2026-10-16",
                        "days_to_expiry": 0,
                        "strike": 6000,
                        "value": -338000000
                      }
                    ],
                    "expiration_window": {
                      "count": 12,
                      "offset": 0,
                      "total_expirations": 31
                    },
                    "greek": "gamma",
                    "largest_cell": {
                      "date_of_expiry": "2026-10-16",
                      "strike": 6000,
                      "value": -338000000
                    },
                    "leg": "net",
                    "maximum": 10300000,
                    "metric": "gamma",
                    "minimum": -338000000,
                    "model": "classic_oi",
                    "perspective": "dealer",
                    "positioning_model": "oi_signed_proxy-v1",
                    "roots": [
                      "SPX",
                      "SPXW"
                    ],
                    "session": "rth",
                    "strike_range": {
                      "highest_strike": 6600,
                      "lowest_strike": 5400,
                      "total_strikes": 121
                    },
                    "trading_date": "2026-10-16",
                    "underlying_symbol": "SPX",
                    "unit": "per_percent",
                    "unit_label": "usd_per_pct",
                    "valuation": {
                      "chain_timestamp": 1792160995000,
                      "open_interest_date": "2026-10-15",
                      "risk_free_rate": 0.0412,
                      "timestamp": 1792161000000,
                      "underlying_price": 6021.4,
                      "underlying_stale": false,
                      "underlying_timestamp": 1792160999000
                    }
                  },
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "opra"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/OptionsExposureSurfaceRow"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Dense strike by expiration surface of net modeled exposure for 3D views.",
        "tags": [
          "options"
        ],
        "x-dataset": "options",
        "x-history-params": [
          "date"
        ],
        "x-overnight": true,
        "x-streamable": true
      }
    },
    "/v1/options/flow": {
      "get": {
        "description": "Option order flow with the prints of one order consolidated: a sweep or split spanning several prints of one contract is one row, with its legs, exchanges, volume-weighted price, premium and aggressor side. Each order is classified by its most aggressive print against the quote at execution; direction that cannot be determined stays unknown. Filters apply to individual prints; an order is returned when at least one of its prints matches, so a premium filter selects orders with a large leg, not a large total. Give underlying_symbol or up to ten underlying_symbols. Rows are newest first; next_cursor_id pages back through the session and stays valid across restarts for 24 hours. Only prints retained by the platform can be served: roughly the last five sessions, and overnight prints only for the most recent session. Requesting an older session starts a load and answers 503 data_pending with retry_after_ms. A print cancelled after it was served is not recalled, and prints backfilled behind a cursor's position can be missed by a walk in progress; re-read the session for a complete view. Captured options flow is scoped to one trading date and the selected session. By default, this route provides the current session, or the last completed session while the market is closed. Totals restart for each new session. Explicit dates can read retained regular-session history (normally five sessions); overnight flow is limited to the most recent session. Session hours follow the underlying's calendar in /v1/options/sessions. Coverage may be partial.",
        "operationId": "optionsFlow",
        "parameters": [
          {
            "description": "Option root or family: SPX returns the SPX and SPXW roots, SPXW only the weekly root, QQQ, NDXP, RUTW, XSP ... Give this or underlying_symbols.",
            "in": "query",
            "name": "underlying_symbol",
            "required": false,
            "schema": {
              "maxLength": 8,
              "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
              "type": "string"
            }
          },
          {
            "description": "Several underlyings in one request, comma separated, at most 10 (for example SPX,SPY,QQQ). Use either underlying_symbol or underlying_symbols.",
            "explode": false,
            "in": "query",
            "name": "underlying_symbols",
            "required": false,
            "schema": {
              "items": {
                "maxLength": 128,
                "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
                "type": "string"
              },
              "maxItems": 10,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Trading date (YYYY-MM-DD). Default: the current session, else the most recent completed one. Overnight prints belong to the next trading date.",
            "in": "query",
            "name": "date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Trading session: rth is the regular session, gth the overnight (global trading hours) session before the trading date, all both. Overnight data requires the Pro plan and exists only for underlyings with an overnight session; GET /v1/options/sessions shows which.",
            "in": "query",
            "name": "session",
            "required": false,
            "schema": {
              "default": "rth",
              "enum": [
                "rth",
                "gth",
                "all"
              ],
              "type": "string"
            }
          },
          {
            "description": "Start of the window (inclusive). The window must lie within one trading session; combine with date to name that session.",
            "in": "query",
            "name": "start_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "End of the window (exclusive).",
            "in": "query",
            "name": "end_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "Calls or puts. Omit for both.",
            "in": "query",
            "name": "contract_type",
            "required": false,
            "schema": {
              "enum": [
                "call",
                "put"
              ],
              "type": "string"
            }
          },
          {
            "description": "Only contracts expiring on this date.",
            "in": "query",
            "name": "date_of_expiry",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Minimum days to expiration (0 = expires on the trading date).",
            "in": "query",
            "name": "min_dte",
            "required": false,
            "schema": {
              "maximum": 3650,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Maximum days to expiration.",
            "in": "query",
            "name": "max_dte",
            "required": false,
            "schema": {
              "maximum": 3650,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Minimum premium in US dollars of a print (price x size x multiplier).",
            "in": "query",
            "name": "min_premium",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": 0,
              "type": "number"
            }
          },
          {
            "description": "Maximum premium in US dollars of a print.",
            "in": "query",
            "name": "max_premium",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": 0,
              "type": "number"
            }
          },
          {
            "description": "Minimum print size in contracts.",
            "in": "query",
            "name": "min_size",
            "required": false,
            "schema": {
              "maximum": 1000000000,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Maximum print size in contracts.",
            "in": "query",
            "name": "max_size",
            "required": false,
            "schema": {
              "maximum": 1000000000,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Comma-separated order types: sweep, block, split, single, golden, multileg, cross, floor, auction, iso. A print matches when any listed type applies. Sweeps and splits are inferred groupings, not exchange-confirmed.",
            "explode": false,
            "in": "query",
            "name": "trade_type",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "sweep",
                  "block",
                  "split",
                  "single",
                  "golden",
                  "multileg",
                  "cross",
                  "floor",
                  "auction",
                  "iso"
                ],
                "type": "string"
              },
              "maxItems": 10,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Comma-separated aggressor classes: above_ask, at_ask, near_ask, mid, near_bid, at_bid, below_bid, unknown. ask selects at_ask and near_ask, bid selects near_bid and at_bid. at_ask without near_ask (and at_bid without near_bid) can be asked for only on /v1/options/trades and /v1/options/flow/overnight; elsewhere use ask and bid.",
            "explode": false,
            "in": "query",
            "name": "side",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "above_ask",
                  "at_ask",
                  "near_ask",
                  "ask",
                  "mid",
                  "near_bid",
                  "at_bid",
                  "bid",
                  "below_bid",
                  "unknown"
                ],
                "type": "string"
              },
              "maxItems": 10,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Comma-separated sentiments: bullish (calls bought or puts sold), bearish (puts bought or calls sold), neutral (traded at the mid) and unknown (direction not determinable).",
            "explode": false,
            "in": "query",
            "name": "sentiment",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "bullish",
                  "bearish",
                  "neutral",
                  "unknown"
                ],
                "type": "string"
              },
              "maxItems": 4,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Only out-of-the-money contracts (strike beyond the underlying price). Prints without a known underlying price are excluded.",
            "in": "query",
            "name": "otm_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Include multi-leg (complex order) prints. Default true.",
            "in": "query",
            "name": "include_complex",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Only unusual activity: volume above open interest within 45 days, premium of at least $250,000, or an out-of-the-money sweep at the ask.",
            "in": "query",
            "name": "unusual_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Lowest strike in dollars.",
            "in": "query",
            "name": "min_strike",
            "required": false,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 1000000,
              "type": "number"
            }
          },
          {
            "description": "Highest strike in dollars.",
            "in": "query",
            "name": "max_strike",
            "required": false,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 1000000,
              "type": "number"
            }
          },
          {
            "description": "Maximum rows to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 100,
              "maximum": 500,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Opaque cursor returned as pagination.next_cursor_id; resumes the same query on the next page.",
            "in": "query",
            "name": "cursor_id",
            "required": false,
            "schema": {
              "maxLength": 1024,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "contract_type": "call",
                      "date_of_expiry": "2026-10-16",
                      "days_to_expiry": 0,
                      "end_timestamp": 1792161012912,
                      "exchange_count": 3,
                      "flags": [
                        "iso"
                      ],
                      "id": "SPXW:20261016:12",
                      "is_block": false,
                      "is_golden": false,
                      "legs": 4,
                      "open_interest": 4120,
                      "otm_percent": 0.4787,
                      "premium": 202800,
                      "price": 3.38,
                      "sentiment": "bullish",
                      "side": "ask",
                      "size": 600,
                      "strike": 6050,
                      "timestamp": 1792161012345,
                      "trade_type": "sweep",
                      "underlying_price": 6021.4,
                      "underlying_symbol": "SPXW"
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "opra"
                  },
                  "pagination": {
                    "count": 1,
                    "has_more": false,
                    "limit": 100,
                    "next_cursor_id": null,
                    "next_url": null
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/OptionsFlowRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "required": [
                    "data",
                    "meta",
                    "pagination"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Consolidated option orders: sweeps, splits, blocks and single prints.",
        "tags": [
          "options"
        ],
        "x-dataset": "options",
        "x-history-params": [
          "date",
          "start_time",
          "end_time"
        ],
        "x-mcp": true,
        "x-overnight": true,
        "x-paginated": true,
        "x-stored-session-notice": "Captured options flow is scoped to one trading date and the selected session. By default, this route provides the current session, or the last completed session while the market is closed. Totals restart for each new session. Explicit dates can read retained regular-session history (normally five sessions); overnight flow is limited to the most recent session. Session hours follow the underlying's calendar in /v1/options/sessions. Coverage may be partial."
      }
    },
    "/v1/options/flow/by-expiration": {
      "get": {
        "description": "The flow of the filtered prints grouped by expiration, soonest first, one row each: call and put premium, volume and trades, the net premium (ask side minus bid side) and the put/call volume ratio. By default the nearest 10 expirations with prints are shown; max_expirations raises that to 24, and min_dte, max_dte or date_of_expiry choose the window. Expirations without prints in the window are not listed, and an expiration that has already expired is listed for the sessions it traded in. Captured options flow is scoped to one trading date and the selected session. By default, this route provides the current session, or the last completed session while the market is closed. Totals restart for each new session. Explicit dates can read retained regular-session history (normally five sessions); overnight flow is limited to the most recent session. Session hours follow the underlying's calendar in /v1/options/sessions. Coverage may be partial.",
        "operationId": "optionsFlowByExpiration",
        "parameters": [
          {
            "description": "Option root or family: SPX covers the SPX and SPXW roots, SPXW only the weekly root, QQQ, NDXP, RUTW, XSP ...",
            "in": "query",
            "name": "underlying_symbol",
            "required": true,
            "schema": {
              "maxLength": 8,
              "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
              "type": "string"
            }
          },
          {
            "description": "Number of expirations to return, nearest first.",
            "in": "query",
            "name": "max_expirations",
            "required": false,
            "schema": {
              "default": 10,
              "maximum": 24,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Trading date (YYYY-MM-DD). Default: the current session, else the most recent completed one. Overnight prints belong to the next trading date.",
            "in": "query",
            "name": "date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Trading session: rth is the regular session, gth the overnight (global trading hours) session before the trading date, all both. Overnight data requires the Pro plan and exists only for underlyings with an overnight session; GET /v1/options/sessions shows which.",
            "in": "query",
            "name": "session",
            "required": false,
            "schema": {
              "default": "rth",
              "enum": [
                "rth",
                "gth",
                "all"
              ],
              "type": "string"
            }
          },
          {
            "description": "Calls or puts. Omit for both.",
            "in": "query",
            "name": "contract_type",
            "required": false,
            "schema": {
              "enum": [
                "call",
                "put"
              ],
              "type": "string"
            }
          },
          {
            "description": "Only contracts expiring on this date.",
            "in": "query",
            "name": "date_of_expiry",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Minimum days to expiration (0 = expires on the trading date).",
            "in": "query",
            "name": "min_dte",
            "required": false,
            "schema": {
              "maximum": 3650,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Maximum days to expiration.",
            "in": "query",
            "name": "max_dte",
            "required": false,
            "schema": {
              "maximum": 3650,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Minimum premium in US dollars of a print (price x size x multiplier).",
            "in": "query",
            "name": "min_premium",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": 0,
              "type": "number"
            }
          },
          {
            "description": "Maximum premium in US dollars of a print.",
            "in": "query",
            "name": "max_premium",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": 0,
              "type": "number"
            }
          },
          {
            "description": "Minimum print size in contracts.",
            "in": "query",
            "name": "min_size",
            "required": false,
            "schema": {
              "maximum": 1000000000,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Maximum print size in contracts.",
            "in": "query",
            "name": "max_size",
            "required": false,
            "schema": {
              "maximum": 1000000000,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Comma-separated order types: sweep, block, split, single, golden, multileg, cross, floor, auction, iso. A print matches when any listed type applies. Sweeps and splits are inferred groupings, not exchange-confirmed.",
            "explode": false,
            "in": "query",
            "name": "trade_type",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "sweep",
                  "block",
                  "split",
                  "single",
                  "golden",
                  "multileg",
                  "cross",
                  "floor",
                  "auction",
                  "iso"
                ],
                "type": "string"
              },
              "maxItems": 10,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Comma-separated aggressor classes: above_ask, at_ask, near_ask, mid, near_bid, at_bid, below_bid, unknown. ask selects at_ask and near_ask, bid selects near_bid and at_bid. at_ask without near_ask (and at_bid without near_bid) can be asked for only on /v1/options/trades and /v1/options/flow/overnight; elsewhere use ask and bid.",
            "explode": false,
            "in": "query",
            "name": "side",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "above_ask",
                  "at_ask",
                  "near_ask",
                  "ask",
                  "mid",
                  "near_bid",
                  "at_bid",
                  "bid",
                  "below_bid",
                  "unknown"
                ],
                "type": "string"
              },
              "maxItems": 10,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Comma-separated sentiments: bullish (calls bought or puts sold), bearish (puts bought or calls sold), neutral (traded at the mid) and unknown (direction not determinable).",
            "explode": false,
            "in": "query",
            "name": "sentiment",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "bullish",
                  "bearish",
                  "neutral",
                  "unknown"
                ],
                "type": "string"
              },
              "maxItems": 4,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Only out-of-the-money contracts (strike beyond the underlying price). Prints without a known underlying price are excluded.",
            "in": "query",
            "name": "otm_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Include multi-leg (complex order) prints. Default true.",
            "in": "query",
            "name": "include_complex",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Only unusual activity: volume above open interest within 45 days, premium of at least $250,000, or an out-of-the-money sweep at the ask.",
            "in": "query",
            "name": "unusual_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Lowest strike in dollars.",
            "in": "query",
            "name": "min_strike",
            "required": false,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 1000000,
              "type": "number"
            }
          },
          {
            "description": "Highest strike in dollars.",
            "in": "query",
            "name": "max_strike",
            "required": false,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 1000000,
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "call_premium": 21400000,
                      "call_trades": 3100,
                      "call_volume": 120000,
                      "date_of_expiry": "2026-10-16",
                      "days_to_expiry": 0,
                      "net_call_premium": 3200000,
                      "net_put_premium": 2100000,
                      "put_call_volume_ratio": 0.9,
                      "put_premium": 17900000,
                      "put_trades": 2900,
                      "put_volume": 108000
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "opra"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/OptionsFlowByExpirationRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Call and put premium, volume and net flow for each expiration.",
        "tags": [
          "options"
        ],
        "x-dataset": "options",
        "x-history-params": [
          "date"
        ],
        "x-overnight": true,
        "x-stored-session-notice": "Captured options flow is scoped to one trading date and the selected session. By default, this route provides the current session, or the last completed session while the market is closed. Totals restart for each new session. Explicit dates can read retained regular-session history (normally five sessions); overnight flow is limited to the most recent session. Session hours follow the underlying's calendar in /v1/options/sessions. Coverage may be partial.",
        "x-streamable": true
      }
    },
    "/v1/options/flow/by-strike": {
      "get": {
        "description": "For each strike, the premium and volume of calls and puts split into ask side, bid side, mid and unknown, the net premium (ask side minus bid side) and the open interest, with the underlying price and session totals. All expirations of the underlying are included unless date_of_expiry or the DTE bounds narrow them. Strikes without prints in the window are not listed. Captured options flow is scoped to one trading date and the selected session. By default, this route provides the current session, or the last completed session while the market is closed. Totals restart for each new session. Explicit dates can read retained regular-session history (normally five sessions); overnight flow is limited to the most recent session. Session hours follow the underlying's calendar in /v1/options/sessions. Coverage may be partial.",
        "operationId": "optionsFlowByStrike",
        "parameters": [
          {
            "description": "Option root or family: SPX covers the SPX and SPXW roots, SPXW only the weekly root, QQQ, NDXP, RUTW, XSP ...",
            "in": "query",
            "name": "underlying_symbol",
            "required": true,
            "schema": {
              "maxLength": 8,
              "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
              "type": "string"
            }
          },
          {
            "description": "Trading date (YYYY-MM-DD). Default: the current session, else the most recent completed one. Overnight prints belong to the next trading date.",
            "in": "query",
            "name": "date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Trading session: rth is the regular session, gth the overnight (global trading hours) session before the trading date, all both. Overnight data requires the Pro plan and exists only for underlyings with an overnight session; GET /v1/options/sessions shows which.",
            "in": "query",
            "name": "session",
            "required": false,
            "schema": {
              "default": "rth",
              "enum": [
                "rth",
                "gth",
                "all"
              ],
              "type": "string"
            }
          },
          {
            "description": "Calls or puts. Omit for both.",
            "in": "query",
            "name": "contract_type",
            "required": false,
            "schema": {
              "enum": [
                "call",
                "put"
              ],
              "type": "string"
            }
          },
          {
            "description": "Only contracts expiring on this date.",
            "in": "query",
            "name": "date_of_expiry",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Minimum days to expiration (0 = expires on the trading date).",
            "in": "query",
            "name": "min_dte",
            "required": false,
            "schema": {
              "maximum": 3650,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Maximum days to expiration.",
            "in": "query",
            "name": "max_dte",
            "required": false,
            "schema": {
              "maximum": 3650,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Minimum premium in US dollars of a print (price x size x multiplier).",
            "in": "query",
            "name": "min_premium",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": 0,
              "type": "number"
            }
          },
          {
            "description": "Maximum premium in US dollars of a print.",
            "in": "query",
            "name": "max_premium",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": 0,
              "type": "number"
            }
          },
          {
            "description": "Minimum print size in contracts.",
            "in": "query",
            "name": "min_size",
            "required": false,
            "schema": {
              "maximum": 1000000000,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Maximum print size in contracts.",
            "in": "query",
            "name": "max_size",
            "required": false,
            "schema": {
              "maximum": 1000000000,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Comma-separated order types: sweep, block, split, single, golden, multileg, cross, floor, auction, iso. A print matches when any listed type applies. Sweeps and splits are inferred groupings, not exchange-confirmed.",
            "explode": false,
            "in": "query",
            "name": "trade_type",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "sweep",
                  "block",
                  "split",
                  "single",
                  "golden",
                  "multileg",
                  "cross",
                  "floor",
                  "auction",
                  "iso"
                ],
                "type": "string"
              },
              "maxItems": 10,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Comma-separated aggressor classes: above_ask, at_ask, near_ask, mid, near_bid, at_bid, below_bid, unknown. ask selects at_ask and near_ask, bid selects near_bid and at_bid. at_ask without near_ask (and at_bid without near_bid) can be asked for only on /v1/options/trades and /v1/options/flow/overnight; elsewhere use ask and bid.",
            "explode": false,
            "in": "query",
            "name": "side",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "above_ask",
                  "at_ask",
                  "near_ask",
                  "ask",
                  "mid",
                  "near_bid",
                  "at_bid",
                  "bid",
                  "below_bid",
                  "unknown"
                ],
                "type": "string"
              },
              "maxItems": 10,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Comma-separated sentiments: bullish (calls bought or puts sold), bearish (puts bought or calls sold), neutral (traded at the mid) and unknown (direction not determinable).",
            "explode": false,
            "in": "query",
            "name": "sentiment",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "bullish",
                  "bearish",
                  "neutral",
                  "unknown"
                ],
                "type": "string"
              },
              "maxItems": 4,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Only out-of-the-money contracts (strike beyond the underlying price). Prints without a known underlying price are excluded.",
            "in": "query",
            "name": "otm_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Include multi-leg (complex order) prints. Default false.",
            "in": "query",
            "name": "include_complex",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Only unusual activity: volume above open interest within 45 days, premium of at least $250,000, or an out-of-the-money sweep at the ask.",
            "in": "query",
            "name": "unusual_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Lowest strike in dollars.",
            "in": "query",
            "name": "min_strike",
            "required": false,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 1000000,
              "type": "number"
            }
          },
          {
            "description": "Highest strike in dollars.",
            "in": "query",
            "name": "max_strike",
            "required": false,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 1000000,
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "session": "rth",
                    "strikes": [
                      {
                        "call": {
                          "ask_premium": 840000,
                          "ask_volume": 1680,
                          "bid_premium": 525000,
                          "bid_volume": 1050,
                          "mid_premium": 420000,
                          "mid_volume": 840,
                          "net_premium": 315000,
                          "premium": 2100000,
                          "unknown_premium": 315000,
                          "unknown_volume": 630,
                          "volume": 4200
                        },
                        "call_open_interest": 18200,
                        "put": {
                          "ask_premium": 128000,
                          "ask_volume": 320,
                          "bid_premium": 80000,
                          "bid_volume": 200,
                          "mid_premium": 64000,
                          "mid_volume": 160,
                          "net_premium": 48000,
                          "premium": 320000,
                          "unknown_premium": 48000,
                          "unknown_volume": 120,
                          "volume": 800
                        },
                        "put_open_interest": 9400,
                        "strike": 6050
                      }
                    ],
                    "totals": {
                      "call_premium": 41200000,
                      "net_call_premium": 6180000,
                      "net_put_premium": 5070000,
                      "put_premium": 33800000
                    },
                    "trading_date": "2026-10-16",
                    "underlying_price": 6021.4,
                    "underlying_symbol": "SPX"
                  },
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "opra"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/OptionsFlowByStrikeRow"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Call and put premium and volume at every strike, by aggressor class.",
        "tags": [
          "options"
        ],
        "x-dataset": "options",
        "x-history-params": [
          "date"
        ],
        "x-mcp": true,
        "x-overnight": true,
        "x-stored-session-notice": "Captured options flow is scoped to one trading date and the selected session. By default, this route provides the current session, or the last completed session while the market is closed. Totals restart for each new session. Explicit dates can read retained regular-session history (normally five sessions); overnight flow is limited to the most recent session. Session hours follow the underlying's calendar in /v1/options/sessions. Coverage may be partial.",
        "x-streamable": true
      }
    },
    "/v1/options/flow/exchanges": {
      "get": {
        "description": "Each exchange's (or venue group's) premium, volume and trades and its share of the total. Without underlying_symbol the whole options market is covered, including underlyings the platform does not tabulate trade by trade; scope narrows that to index or equity options. An exchange code without a name is listed as unmapped_<code>. Captured options flow is scoped to one trading date and the selected session. By default, this route provides the current session, or the last completed session while the market is closed. Totals restart for each new session. Explicit dates can read retained regular-session history (normally five sessions); overnight flow is limited to the most recent session. Session hours follow the underlying's calendar in /v1/options/sessions. Coverage may be partial.",
        "operationId": "optionsFlowExchanges",
        "parameters": [
          {
            "description": "Restrict to one underlying (root or family). Omit for the whole options market.",
            "in": "query",
            "name": "underlying_symbol",
            "required": false,
            "schema": {
              "maxLength": 8,
              "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
              "type": "string"
            }
          },
          {
            "description": "Market segment when no underlying is given: all, index (index and volatility-index options) or equity (stock and ETF options).",
            "in": "query",
            "name": "scope",
            "required": false,
            "schema": {
              "default": "all",
              "enum": [
                "all",
                "index",
                "equity"
              ],
              "type": "string"
            }
          },
          {
            "description": "Rows per exchange or per venue group (Cboe, Nasdaq, ICE/NYSE, ISE, MIAX, BOX, MEMX, other).",
            "in": "query",
            "name": "group_by",
            "required": false,
            "schema": {
              "default": "exchange",
              "enum": [
                "exchange",
                "venue_group"
              ],
              "type": "string"
            }
          },
          {
            "description": "Trading date (YYYY-MM-DD). Default: the current session, else the most recent completed one.",
            "in": "query",
            "name": "date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Trading session: rth is the regular session, gth the overnight (global trading hours) session before the trading date, all both. Overnight data requires the Pro plan and exists only for underlyings with an overnight session; GET /v1/options/sessions shows which.",
            "in": "query",
            "name": "session",
            "required": false,
            "schema": {
              "default": "rth",
              "enum": [
                "rth",
                "gth",
                "all"
              ],
              "type": "string"
            }
          },
          {
            "description": "Calls or puts. Omit for both.",
            "in": "query",
            "name": "contract_type",
            "required": false,
            "schema": {
              "enum": [
                "call",
                "put"
              ],
              "type": "string"
            }
          },
          {
            "description": "Aggressor classes to include, as for /v1/options/trades.",
            "explode": false,
            "in": "query",
            "name": "side",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "above_ask",
                  "at_ask",
                  "near_ask",
                  "ask",
                  "mid",
                  "near_bid",
                  "at_bid",
                  "bid",
                  "below_bid",
                  "unknown"
                ],
                "type": "string"
              },
              "maxItems": 10,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "exchange": "cboe",
                      "exchange_code": 5,
                      "premium": 7550240000,
                      "premium_share": 0.31,
                      "trades": 610000,
                      "trades_share": 0.26,
                      "venue_group": "Cboe",
                      "volume": 4100000,
                      "volume_share": 0.28
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "opra"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/OptionsFlowExchangesRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Market share of option premium, volume and trades by exchange.",
        "tags": [
          "options"
        ],
        "x-dataset": "options",
        "x-history-params": [
          "date"
        ],
        "x-mcp": true,
        "x-overnight": true,
        "x-stored-session-notice": "Captured options flow is scoped to one trading date and the selected session. By default, this route provides the current session, or the last completed session while the market is closed. Totals restart for each new session. Explicit dates can read retained regular-session history (normally five sessions); overnight flow is limited to the most recent session. Session hours follow the underlying's calendar in /v1/options/sessions. Coverage may be partial.",
        "x-streamable": true
      }
    },
    "/v1/options/flow/leaders": {
      "get": {
        "description": "Ranks underlyings (grain=root) by net, bullish or bearish sentiment premium, total premium, volume or trades, or contracts (grain=contract) by change from the previous close, premium or volume. Root rows carry the bullish, bearish and neutral premium, the bearish-to-bullish ratio, call and put volume and each underlying's share of the market total. Contract rows carry the last price, previous close, percent change, volume, open interest, premium and implied volatility. Fields of the other grain are not present. Captured options flow is scoped to one trading date and the selected session. By default, this route provides the current session, or the last completed session while the market is closed. Totals restart for each new session. Explicit dates can read retained regular-session history (normally five sessions); overnight flow is limited to the most recent session. Session hours follow the underlying's calendar in /v1/options/sessions. Coverage may be partial.",
        "operationId": "optionsFlowLeaders",
        "parameters": [
          {
            "description": "Rank underlyings (root) or individual contracts (contract).",
            "in": "query",
            "name": "grain",
            "required": false,
            "schema": {
              "default": "root",
              "enum": [
                "root",
                "contract"
              ],
              "type": "string"
            }
          },
          {
            "description": "Ranking measure. root: net, bullish, bearish, premium, volume, trades (default net); contract: change_percent, premium, volume (default change_percent).",
            "in": "query",
            "name": "sort",
            "required": false,
            "schema": {
              "enum": [
                "net",
                "bullish",
                "bearish",
                "premium",
                "volume",
                "trades",
                "change_percent"
              ],
              "type": "string"
            }
          },
          {
            "description": "Descending (largest first) or ascending.",
            "in": "query",
            "name": "order",
            "required": false,
            "schema": {
              "default": "desc",
              "enum": [
                "desc",
                "asc"
              ],
              "type": "string"
            }
          },
          {
            "description": "Rows to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 50,
              "maximum": 200,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Minimum premium in US dollars.",
            "in": "query",
            "name": "min_premium",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": 0,
              "type": "number"
            }
          },
          {
            "description": "Contract grain only: underlyings to rank, comma separated, at most 50. Default: every underlying the platform tabulates.",
            "explode": false,
            "in": "query",
            "name": "underlying_symbols",
            "required": false,
            "schema": {
              "items": {
                "maxLength": 128,
                "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
                "type": "string"
              },
              "maxItems": 50,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Trading date (YYYY-MM-DD). Default: the current session, else the most recent completed one.",
            "in": "query",
            "name": "date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Trading session: rth is the regular session, gth the overnight (global trading hours) session before the trading date, all both. Overnight data requires the Pro plan and exists only for underlyings with an overnight session; GET /v1/options/sessions shows which.",
            "in": "query",
            "name": "session",
            "required": false,
            "schema": {
              "default": "rth",
              "enum": [
                "rth",
                "gth",
                "all"
              ],
              "type": "string"
            }
          },
          {
            "description": "Include multi-leg (complex order) prints. Default false.",
            "in": "query",
            "name": "include_complex",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "bearish_premium": 17900000,
                      "bearish_to_bullish_ratio": 0.8404,
                      "bullish_premium": 21300000,
                      "call_volume": 182000,
                      "neutral_premium": 8100000,
                      "premium": 47300000,
                      "premium_share": 0.31,
                      "put_volume": 161000,
                      "trades": 10100,
                      "trades_share": 0.26,
                      "underlying_symbol": "SPX",
                      "volume": 343000,
                      "volume_share": 0.28
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "opra"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/OptionsFlowLeadersRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Underlyings or contracts leading option flow: top premium, bullish, bearish and movers.",
        "tags": [
          "options"
        ],
        "x-dataset": "options",
        "x-history-params": [
          "date"
        ],
        "x-mcp": true,
        "x-overnight": true,
        "x-stored-session-notice": "Captured options flow is scoped to one trading date and the selected session. By default, this route provides the current session, or the last completed session while the market is closed. Totals restart for each new session. Explicit dates can read retained regular-session history (normally five sessions); overnight flow is limited to the most recent session. Session hours follow the underlying's calendar in /v1/options/sessions. Coverage may be partial.",
        "x-streamable": true
      }
    },
    "/v1/options/flow/net-drift": {
      "get": {
        "description": "Premium bought at the ask side minus premium sold at the bid side, for calls and puts separately, per bucket (net_call_premium, net_put_premium) and accumulated from the start of the session. A rising net call line with a falling net put line means customers are buying calls and selling puts. Mid-market premium is reported separately and not counted as a direction. Buckets that have not started yet are not returned. Captured options flow is scoped to one trading date and the selected session. By default, this route provides the current session, or the last completed session while the market is closed. Totals restart for each new session. Explicit dates can read retained regular-session history (normally five sessions); overnight flow is limited to the most recent session. Session hours follow the underlying's calendar in /v1/options/sessions. Coverage may be partial.",
        "operationId": "optionsFlowNetDrift",
        "parameters": [
          {
            "description": "Option root or family: SPX covers the SPX and SPXW roots, SPXW only the weekly root, QQQ, NDXP, RUTW, XSP ...",
            "in": "query",
            "name": "underlying_symbol",
            "required": true,
            "schema": {
              "maxLength": 8,
              "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
              "type": "string"
            }
          },
          {
            "description": "Bucket length: 1m, 5m, 15m, 30m or 1h.",
            "in": "query",
            "name": "interval",
            "required": false,
            "schema": {
              "default": "5m",
              "enum": [
                "1m",
                "5m",
                "15m",
                "30m",
                "1h"
              ],
              "type": "string"
            }
          },
          {
            "description": "Trading date (YYYY-MM-DD). Default: the current session, else the most recent completed one. Overnight prints belong to the next trading date.",
            "in": "query",
            "name": "date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Trading session: rth is the regular session, gth the overnight (global trading hours) session before the trading date, all both. Overnight data requires the Pro plan and exists only for underlyings with an overnight session; GET /v1/options/sessions shows which.",
            "in": "query",
            "name": "session",
            "required": false,
            "schema": {
              "default": "rth",
              "enum": [
                "rth",
                "gth",
                "all"
              ],
              "type": "string"
            }
          },
          {
            "description": "Start of the window (inclusive). The window must lie within one trading session; combine with date to name that session.",
            "in": "query",
            "name": "start_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "End of the window (exclusive).",
            "in": "query",
            "name": "end_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "Calls or puts. Omit for both.",
            "in": "query",
            "name": "contract_type",
            "required": false,
            "schema": {
              "enum": [
                "call",
                "put"
              ],
              "type": "string"
            }
          },
          {
            "description": "Only contracts expiring on this date.",
            "in": "query",
            "name": "date_of_expiry",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Minimum days to expiration (0 = expires on the trading date).",
            "in": "query",
            "name": "min_dte",
            "required": false,
            "schema": {
              "maximum": 3650,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Maximum days to expiration.",
            "in": "query",
            "name": "max_dte",
            "required": false,
            "schema": {
              "maximum": 3650,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Minimum premium in US dollars of a print (price x size x multiplier).",
            "in": "query",
            "name": "min_premium",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": 0,
              "type": "number"
            }
          },
          {
            "description": "Maximum premium in US dollars of a print.",
            "in": "query",
            "name": "max_premium",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": 0,
              "type": "number"
            }
          },
          {
            "description": "Minimum print size in contracts.",
            "in": "query",
            "name": "min_size",
            "required": false,
            "schema": {
              "maximum": 1000000000,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Maximum print size in contracts.",
            "in": "query",
            "name": "max_size",
            "required": false,
            "schema": {
              "maximum": 1000000000,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Comma-separated order types: sweep, block, split, single, golden, multileg, cross, floor, auction, iso. A print matches when any listed type applies. Sweeps and splits are inferred groupings, not exchange-confirmed.",
            "explode": false,
            "in": "query",
            "name": "trade_type",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "sweep",
                  "block",
                  "split",
                  "single",
                  "golden",
                  "multileg",
                  "cross",
                  "floor",
                  "auction",
                  "iso"
                ],
                "type": "string"
              },
              "maxItems": 10,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Comma-separated aggressor classes: above_ask, at_ask, near_ask, mid, near_bid, at_bid, below_bid, unknown. ask selects at_ask and near_ask, bid selects near_bid and at_bid. at_ask without near_ask (and at_bid without near_bid) can be asked for only on /v1/options/trades and /v1/options/flow/overnight; elsewhere use ask and bid.",
            "explode": false,
            "in": "query",
            "name": "side",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "above_ask",
                  "at_ask",
                  "near_ask",
                  "ask",
                  "mid",
                  "near_bid",
                  "at_bid",
                  "bid",
                  "below_bid",
                  "unknown"
                ],
                "type": "string"
              },
              "maxItems": 10,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Comma-separated sentiments: bullish (calls bought or puts sold), bearish (puts bought or calls sold), neutral (traded at the mid) and unknown (direction not determinable).",
            "explode": false,
            "in": "query",
            "name": "sentiment",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "bullish",
                  "bearish",
                  "neutral",
                  "unknown"
                ],
                "type": "string"
              },
              "maxItems": 4,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Only out-of-the-money contracts (strike beyond the underlying price). Prints without a known underlying price are excluded.",
            "in": "query",
            "name": "otm_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Include multi-leg (complex order) prints. Default false.",
            "in": "query",
            "name": "include_complex",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Only unusual activity: volume above open interest within 45 days, premium of at least $250,000, or an out-of-the-money sweep at the ask.",
            "in": "query",
            "name": "unusual_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Lowest strike in dollars.",
            "in": "query",
            "name": "min_strike",
            "required": false,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 1000000,
              "type": "number"
            }
          },
          {
            "description": "Highest strike in dollars.",
            "in": "query",
            "name": "max_strike",
            "required": false,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 1000000,
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "cumulative_net_call_premium": 12400000,
                      "cumulative_net_put_premium": -4100000,
                      "mid_call_premium": 910000,
                      "mid_put_premium": 740000,
                      "net_call_premium": 1840000,
                      "net_call_volume": 5200,
                      "net_put_premium": -620000,
                      "net_put_volume": -1800,
                      "timestamp": 1792161000000,
                      "underlying_price": 6021.4
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "opra"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/OptionsFlowNetDriftRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Net call and put premium per bucket and cumulatively over the session.",
        "tags": [
          "options"
        ],
        "x-dataset": "options",
        "x-history-params": [
          "date",
          "start_time",
          "end_time"
        ],
        "x-mcp": true,
        "x-overnight": true,
        "x-stored-session-notice": "Captured options flow is scoped to one trading date and the selected session. By default, this route provides the current session, or the last completed session while the market is closed. Totals restart for each new session. Explicit dates can read retained regular-session history (normally five sessions); overnight flow is limited to the most recent session. Session hours follow the underlying's calendar in /v1/options/sessions. Coverage may be partial.",
        "x-streamable": true
      }
    },
    "/v1/options/flow/net-flow": {
      "get": {
        "description": "For each bucket, the net customer buying (ask side minus bid side) of calls and of puts, in premium (US dollars) or contracts, and net, which is net_call minus net_put: positive when buying calls and selling puts dominates (bullish), negative when the reverse (bearish). Mid-market and unknown-direction prints are excluded from the nets. Buckets that have not started yet are not returned. Captured options flow is scoped to one trading date and the selected session. By default, this route provides the current session, or the last completed session while the market is closed. Totals restart for each new session. Explicit dates can read retained regular-session history (normally five sessions); overnight flow is limited to the most recent session. Session hours follow the underlying's calendar in /v1/options/sessions. Coverage may be partial.",
        "operationId": "optionsFlowNetFlow",
        "parameters": [
          {
            "description": "Option root or family: SPX covers the SPX and SPXW roots, SPXW only the weekly root, QQQ, NDXP, RUTW, XSP ...",
            "in": "query",
            "name": "underlying_symbol",
            "required": true,
            "schema": {
              "maxLength": 8,
              "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
              "type": "string"
            }
          },
          {
            "description": "Bucket length: 1m, 5m, 15m, 30m or 1h.",
            "in": "query",
            "name": "interval",
            "required": false,
            "schema": {
              "default": "5m",
              "enum": [
                "1m",
                "5m",
                "15m",
                "30m",
                "1h"
              ],
              "type": "string"
            }
          },
          {
            "description": "Measure: premium in US dollars or volume in contracts.",
            "in": "query",
            "name": "metric",
            "required": false,
            "schema": {
              "default": "premium",
              "enum": [
                "premium",
                "volume"
              ],
              "type": "string"
            }
          },
          {
            "description": "Trading date (YYYY-MM-DD). Default: the current session, else the most recent completed one. Overnight prints belong to the next trading date.",
            "in": "query",
            "name": "date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Trading session: rth is the regular session, gth the overnight (global trading hours) session before the trading date, all both. Overnight data requires the Pro plan and exists only for underlyings with an overnight session; GET /v1/options/sessions shows which.",
            "in": "query",
            "name": "session",
            "required": false,
            "schema": {
              "default": "rth",
              "enum": [
                "rth",
                "gth",
                "all"
              ],
              "type": "string"
            }
          },
          {
            "description": "Start of the window (inclusive). The window must lie within one trading session; combine with date to name that session.",
            "in": "query",
            "name": "start_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "End of the window (exclusive).",
            "in": "query",
            "name": "end_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "Calls or puts. Omit for both.",
            "in": "query",
            "name": "contract_type",
            "required": false,
            "schema": {
              "enum": [
                "call",
                "put"
              ],
              "type": "string"
            }
          },
          {
            "description": "Only contracts expiring on this date.",
            "in": "query",
            "name": "date_of_expiry",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Minimum days to expiration (0 = expires on the trading date).",
            "in": "query",
            "name": "min_dte",
            "required": false,
            "schema": {
              "maximum": 3650,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Maximum days to expiration.",
            "in": "query",
            "name": "max_dte",
            "required": false,
            "schema": {
              "maximum": 3650,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Minimum premium in US dollars of a print (price x size x multiplier).",
            "in": "query",
            "name": "min_premium",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": 0,
              "type": "number"
            }
          },
          {
            "description": "Maximum premium in US dollars of a print.",
            "in": "query",
            "name": "max_premium",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": 0,
              "type": "number"
            }
          },
          {
            "description": "Minimum print size in contracts.",
            "in": "query",
            "name": "min_size",
            "required": false,
            "schema": {
              "maximum": 1000000000,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Maximum print size in contracts.",
            "in": "query",
            "name": "max_size",
            "required": false,
            "schema": {
              "maximum": 1000000000,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Comma-separated order types: sweep, block, split, single, golden, multileg, cross, floor, auction, iso. A print matches when any listed type applies. Sweeps and splits are inferred groupings, not exchange-confirmed.",
            "explode": false,
            "in": "query",
            "name": "trade_type",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "sweep",
                  "block",
                  "split",
                  "single",
                  "golden",
                  "multileg",
                  "cross",
                  "floor",
                  "auction",
                  "iso"
                ],
                "type": "string"
              },
              "maxItems": 10,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Comma-separated aggressor classes: above_ask, at_ask, near_ask, mid, near_bid, at_bid, below_bid, unknown. ask selects at_ask and near_ask, bid selects near_bid and at_bid. at_ask without near_ask (and at_bid without near_bid) can be asked for only on /v1/options/trades and /v1/options/flow/overnight; elsewhere use ask and bid.",
            "explode": false,
            "in": "query",
            "name": "side",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "above_ask",
                  "at_ask",
                  "near_ask",
                  "ask",
                  "mid",
                  "near_bid",
                  "at_bid",
                  "bid",
                  "below_bid",
                  "unknown"
                ],
                "type": "string"
              },
              "maxItems": 10,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Comma-separated sentiments: bullish (calls bought or puts sold), bearish (puts bought or calls sold), neutral (traded at the mid) and unknown (direction not determinable).",
            "explode": false,
            "in": "query",
            "name": "sentiment",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "bullish",
                  "bearish",
                  "neutral",
                  "unknown"
                ],
                "type": "string"
              },
              "maxItems": 4,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Only out-of-the-money contracts (strike beyond the underlying price). Prints without a known underlying price are excluded.",
            "in": "query",
            "name": "otm_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Include multi-leg (complex order) prints. Default false.",
            "in": "query",
            "name": "include_complex",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Only unusual activity: volume above open interest within 45 days, premium of at least $250,000, or an out-of-the-money sweep at the ask.",
            "in": "query",
            "name": "unusual_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Lowest strike in dollars.",
            "in": "query",
            "name": "min_strike",
            "required": false,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 1000000,
              "type": "number"
            }
          },
          {
            "description": "Highest strike in dollars.",
            "in": "query",
            "name": "max_strike",
            "required": false,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 1000000,
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "net": 2460000,
                      "net_call": 1840000,
                      "net_put": -620000,
                      "timestamp": 1792161000000,
                      "underlying_price": 6021.4
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "opra"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/OptionsFlowNetFlowRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Net premium or net volume per bucket for calls, puts and overall.",
        "tags": [
          "options"
        ],
        "x-dataset": "options",
        "x-history-params": [
          "date",
          "start_time",
          "end_time"
        ],
        "x-mcp": true,
        "x-overnight": true,
        "x-stored-session-notice": "Captured options flow is scoped to one trading date and the selected session. By default, this route provides the current session, or the last completed session while the market is closed. Totals restart for each new session. Explicit dates can read retained regular-session history (normally five sessions); overnight flow is limited to the most recent session. Session hours follow the underlying's calendar in /v1/options/sessions. Coverage may be partial.",
        "x-streamable": true
      }
    },
    "/v1/options/flow/overnight": {
      "get": {
        "description": "Prints from the overnight session that precedes a trading date (20:15 ET the evening before to 09:25 ET), for the index options that trade overnight: SPX, SPXW, XSP, VIX, VIXW, RUT and RUTW. Rows have the shape of /v1/options/trades. Requires the Pro plan; overnight data is retained for the most recent session only. Underlying prices overnight are model references, not official index prints. Rows are newest first; next_cursor_id pages back through the session and stays valid across restarts for 24 hours. Only prints retained by the platform can be served: roughly the last five sessions, and overnight prints only for the most recent session. Requesting an older session starts a load and answers 503 data_pending with retry_after_ms. A print cancelled after it was served is not recalled, and prints backfilled behind a cursor's position can be missed by a walk in progress; re-read the session for a complete view. Captured options flow is scoped to one trading date and the selected session. By default, this route provides the current session, or the last completed session while the market is closed. Totals restart for each new session. Explicit dates can read retained regular-session history (normally five sessions); overnight flow is limited to the most recent session. Session hours follow the underlying's calendar in /v1/options/sessions. Coverage may be partial.",
        "operationId": "optionsFlowOvernight",
        "parameters": [
          {
            "description": "Option root or family: SPX returns the SPX and SPXW roots, SPXW only the weekly root, QQQ, NDXP, RUTW, XSP ... Give this or underlying_symbols.",
            "in": "query",
            "name": "underlying_symbol",
            "required": false,
            "schema": {
              "maxLength": 8,
              "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
              "type": "string"
            }
          },
          {
            "description": "Several underlyings in one request, comma separated, at most 10 (for example SPX,SPY,QQQ). Use either underlying_symbol or underlying_symbols.",
            "explode": false,
            "in": "query",
            "name": "underlying_symbols",
            "required": false,
            "schema": {
              "items": {
                "maxLength": 128,
                "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
                "type": "string"
              },
              "maxItems": 10,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Trading date (YYYY-MM-DD). Default: the current session, else the most recent completed one. Overnight prints belong to the next trading date.",
            "in": "query",
            "name": "date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Start of the window (inclusive). The window must lie within one trading session; combine with date to name that session.",
            "in": "query",
            "name": "start_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "End of the window (exclusive).",
            "in": "query",
            "name": "end_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "Calls or puts. Omit for both.",
            "in": "query",
            "name": "contract_type",
            "required": false,
            "schema": {
              "enum": [
                "call",
                "put"
              ],
              "type": "string"
            }
          },
          {
            "description": "Only contracts expiring on this date.",
            "in": "query",
            "name": "date_of_expiry",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Minimum days to expiration (0 = expires on the trading date).",
            "in": "query",
            "name": "min_dte",
            "required": false,
            "schema": {
              "maximum": 3650,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Maximum days to expiration.",
            "in": "query",
            "name": "max_dte",
            "required": false,
            "schema": {
              "maximum": 3650,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Minimum premium in US dollars of a print (price x size x multiplier).",
            "in": "query",
            "name": "min_premium",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": 0,
              "type": "number"
            }
          },
          {
            "description": "Maximum premium in US dollars of a print.",
            "in": "query",
            "name": "max_premium",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": 0,
              "type": "number"
            }
          },
          {
            "description": "Minimum print size in contracts.",
            "in": "query",
            "name": "min_size",
            "required": false,
            "schema": {
              "maximum": 1000000000,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Maximum print size in contracts.",
            "in": "query",
            "name": "max_size",
            "required": false,
            "schema": {
              "maximum": 1000000000,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Comma-separated order types: sweep, block, split, single, golden, multileg, cross, floor, auction, iso. A print matches when any listed type applies. Sweeps and splits are inferred groupings, not exchange-confirmed.",
            "explode": false,
            "in": "query",
            "name": "trade_type",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "sweep",
                  "block",
                  "split",
                  "single",
                  "golden",
                  "multileg",
                  "cross",
                  "floor",
                  "auction",
                  "iso"
                ],
                "type": "string"
              },
              "maxItems": 10,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Comma-separated aggressor classes: above_ask, at_ask, near_ask, mid, near_bid, at_bid, below_bid, unknown. ask selects at_ask and near_ask, bid selects near_bid and at_bid. at_ask without near_ask (and at_bid without near_bid) can be asked for only on /v1/options/trades and /v1/options/flow/overnight; elsewhere use ask and bid.",
            "explode": false,
            "in": "query",
            "name": "side",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "above_ask",
                  "at_ask",
                  "near_ask",
                  "ask",
                  "mid",
                  "near_bid",
                  "at_bid",
                  "bid",
                  "below_bid",
                  "unknown"
                ],
                "type": "string"
              },
              "maxItems": 10,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Comma-separated sentiments: bullish (calls bought or puts sold), bearish (puts bought or calls sold), neutral (traded at the mid) and unknown (direction not determinable).",
            "explode": false,
            "in": "query",
            "name": "sentiment",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "bullish",
                  "bearish",
                  "neutral",
                  "unknown"
                ],
                "type": "string"
              },
              "maxItems": 4,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Only out-of-the-money contracts (strike beyond the underlying price). Prints without a known underlying price are excluded.",
            "in": "query",
            "name": "otm_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Include multi-leg (complex order) prints. Default true.",
            "in": "query",
            "name": "include_complex",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Only unusual activity: volume above open interest within 45 days, premium of at least $250,000, or an out-of-the-money sweep at the ask.",
            "in": "query",
            "name": "unusual_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Lowest strike in dollars.",
            "in": "query",
            "name": "min_strike",
            "required": false,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 1000000,
              "type": "number"
            }
          },
          {
            "description": "Highest strike in dollars.",
            "in": "query",
            "name": "max_strike",
            "required": false,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 1000000,
              "type": "number"
            }
          },
          {
            "description": "Comma-separated exchanges the print executed on: nom, amex, cboe, ise, arca, phlx, box, mrcy, gmni, c2, miax, emld, bx, bzx, edgx, perl, memx.",
            "explode": false,
            "in": "query",
            "name": "exchange",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "nom",
                  "amex",
                  "cboe",
                  "ise",
                  "arca",
                  "phlx",
                  "box",
                  "mrcy",
                  "gmni",
                  "c2",
                  "miax",
                  "emld",
                  "bx",
                  "bzx",
                  "edgx",
                  "perl",
                  "memx"
                ],
                "type": "string"
              },
              "maxItems": 17,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Maximum rows to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 100,
              "maximum": 500,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Opaque cursor returned as pagination.next_cursor_id; resumes the same query on the next page.",
            "in": "query",
            "name": "cursor_id",
            "required": false,
            "schema": {
              "maxLength": 1024,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "ask": 4.3,
                      "bid": 4.05,
                      "condition_code": 18,
                      "contract_type": "put",
                      "date_of_expiry": "2026-10-16",
                      "day_volume": 340,
                      "days_to_expiry": 0,
                      "delta": -0.18,
                      "exchange": "cboe",
                      "exchange_code": 5,
                      "flags": [],
                      "group_id": null,
                      "id": "SPXW:20261016:5950000:P:20261015:2207",
                      "implied_volatility": 0.142,
                      "is_block": true,
                      "is_golden": false,
                      "is_unusual": false,
                      "open_interest": 9020,
                      "otm_percent": 0.8,
                      "premium": 12300,
                      "price": 4.1,
                      "sentiment": "bullish",
                      "session": "gth",
                      "side": "near_bid",
                      "side_confidence": 0.9,
                      "size": 30,
                      "strike": 5950,
                      "timestamp": 1792142400250,
                      "trade_type": "single",
                      "underlying_price": 5998.5,
                      "underlying_symbol": "SPXW"
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "opra"
                  },
                  "pagination": {
                    "count": 1,
                    "has_more": false,
                    "limit": 100,
                    "next_cursor_id": null,
                    "next_url": null
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/OptionsFlowOvernightRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "required": [
                    "data",
                    "meta",
                    "pagination"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Overnight (global trading hours) option prints.",
        "tags": [
          "options"
        ],
        "x-dataset": "options",
        "x-history-params": [
          "date",
          "start_time",
          "end_time"
        ],
        "x-overnight": true,
        "x-paginated": true,
        "x-stored-session-notice": "Captured options flow is scoped to one trading date and the selected session. By default, this route provides the current session, or the last completed session while the market is closed. Totals restart for each new session. Explicit dates can read retained regular-session history (normally five sessions); overnight flow is limited to the most recent session. Session hours follow the underlying's calendar in /v1/options/sessions. Coverage may be partial.",
        "x-streamable": true
      }
    },
    "/v1/options/flow/premium-drift": {
      "get": {
        "description": "The running total of customer premium (bought at the ask side minus sold at the bid side) for calls and for puts, and the sentiment drift: call drift minus put drift, which rises when premium flows into calls or out of puts (bullish) and falls in the opposite case. Direction comes from the aggressor side of each print; mid-market and unknown prints add nothing. Buckets that have not started yet are not returned. Captured options flow is scoped to one trading date and the selected session. By default, this route provides the current session, or the last completed session while the market is closed. Totals restart for each new session. Explicit dates can read retained regular-session history (normally five sessions); overnight flow is limited to the most recent session. Session hours follow the underlying's calendar in /v1/options/sessions. Coverage may be partial.",
        "operationId": "optionsFlowPremiumDrift",
        "parameters": [
          {
            "description": "Option root or family: SPX covers the SPX and SPXW roots, SPXW only the weekly root, QQQ, NDXP, RUTW, XSP ...",
            "in": "query",
            "name": "underlying_symbol",
            "required": true,
            "schema": {
              "maxLength": 8,
              "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
              "type": "string"
            }
          },
          {
            "description": "Bucket length: 1m, 5m, 15m, 30m or 1h.",
            "in": "query",
            "name": "interval",
            "required": false,
            "schema": {
              "default": "5m",
              "enum": [
                "1m",
                "5m",
                "15m",
                "30m",
                "1h"
              ],
              "type": "string"
            }
          },
          {
            "description": "Trading date (YYYY-MM-DD). Default: the current session, else the most recent completed one. Overnight prints belong to the next trading date.",
            "in": "query",
            "name": "date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Trading session: rth is the regular session, gth the overnight (global trading hours) session before the trading date, all both. Overnight data requires the Pro plan and exists only for underlyings with an overnight session; GET /v1/options/sessions shows which.",
            "in": "query",
            "name": "session",
            "required": false,
            "schema": {
              "default": "rth",
              "enum": [
                "rth",
                "gth",
                "all"
              ],
              "type": "string"
            }
          },
          {
            "description": "Start of the window (inclusive). The window must lie within one trading session; combine with date to name that session.",
            "in": "query",
            "name": "start_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "End of the window (exclusive).",
            "in": "query",
            "name": "end_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "Calls or puts. Omit for both.",
            "in": "query",
            "name": "contract_type",
            "required": false,
            "schema": {
              "enum": [
                "call",
                "put"
              ],
              "type": "string"
            }
          },
          {
            "description": "Only contracts expiring on this date.",
            "in": "query",
            "name": "date_of_expiry",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Minimum days to expiration (0 = expires on the trading date).",
            "in": "query",
            "name": "min_dte",
            "required": false,
            "schema": {
              "maximum": 3650,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Maximum days to expiration.",
            "in": "query",
            "name": "max_dte",
            "required": false,
            "schema": {
              "maximum": 3650,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Minimum premium in US dollars of a print (price x size x multiplier).",
            "in": "query",
            "name": "min_premium",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": 0,
              "type": "number"
            }
          },
          {
            "description": "Maximum premium in US dollars of a print.",
            "in": "query",
            "name": "max_premium",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": 0,
              "type": "number"
            }
          },
          {
            "description": "Minimum print size in contracts.",
            "in": "query",
            "name": "min_size",
            "required": false,
            "schema": {
              "maximum": 1000000000,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Maximum print size in contracts.",
            "in": "query",
            "name": "max_size",
            "required": false,
            "schema": {
              "maximum": 1000000000,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Comma-separated order types: sweep, block, split, single, golden, multileg, cross, floor, auction, iso. A print matches when any listed type applies. Sweeps and splits are inferred groupings, not exchange-confirmed.",
            "explode": false,
            "in": "query",
            "name": "trade_type",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "sweep",
                  "block",
                  "split",
                  "single",
                  "golden",
                  "multileg",
                  "cross",
                  "floor",
                  "auction",
                  "iso"
                ],
                "type": "string"
              },
              "maxItems": 10,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Comma-separated aggressor classes: above_ask, at_ask, near_ask, mid, near_bid, at_bid, below_bid, unknown. ask selects at_ask and near_ask, bid selects near_bid and at_bid. at_ask without near_ask (and at_bid without near_bid) can be asked for only on /v1/options/trades and /v1/options/flow/overnight; elsewhere use ask and bid.",
            "explode": false,
            "in": "query",
            "name": "side",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "above_ask",
                  "at_ask",
                  "near_ask",
                  "ask",
                  "mid",
                  "near_bid",
                  "at_bid",
                  "bid",
                  "below_bid",
                  "unknown"
                ],
                "type": "string"
              },
              "maxItems": 10,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Comma-separated sentiments: bullish (calls bought or puts sold), bearish (puts bought or calls sold), neutral (traded at the mid) and unknown (direction not determinable).",
            "explode": false,
            "in": "query",
            "name": "sentiment",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "bullish",
                  "bearish",
                  "neutral",
                  "unknown"
                ],
                "type": "string"
              },
              "maxItems": 4,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Only out-of-the-money contracts (strike beyond the underlying price). Prints without a known underlying price are excluded.",
            "in": "query",
            "name": "otm_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Include multi-leg (complex order) prints. Default false.",
            "in": "query",
            "name": "include_complex",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Only unusual activity: volume above open interest within 45 days, premium of at least $250,000, or an out-of-the-money sweep at the ask.",
            "in": "query",
            "name": "unusual_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Lowest strike in dollars.",
            "in": "query",
            "name": "min_strike",
            "required": false,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 1000000,
              "type": "number"
            }
          },
          {
            "description": "Highest strike in dollars.",
            "in": "query",
            "name": "max_strike",
            "required": false,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 1000000,
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "call_drift": 12400000,
                      "put_drift": -4100000,
                      "sentiment_drift": 16500000,
                      "timestamp": 1792161000000,
                      "underlying_price": 6021.4
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "opra"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/OptionsFlowPremiumDriftRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Cumulative signed premium of calls, puts and net sentiment over the session.",
        "tags": [
          "options"
        ],
        "x-dataset": "options",
        "x-history-params": [
          "date",
          "start_time",
          "end_time"
        ],
        "x-overnight": true,
        "x-stored-session-notice": "Captured options flow is scoped to one trading date and the selected session. By default, this route provides the current session, or the last completed session while the market is closed. Totals restart for each new session. Explicit dates can read retained regular-session history (normally five sessions); overnight flow is limited to the most recent session. Session hours follow the underlying's calendar in /v1/options/sessions. Coverage may be partial.",
        "x-streamable": true
      }
    },
    "/v1/options/flow/put-call-ratio": {
      "get": {
        "description": "Put volume divided by call volume and put premium divided by call premium for every bucket, with the same ratios accumulated from the start of the session. All prints count, whatever their aggressor side. A ratio is null when its call side is zero. Buckets that have not started yet are not returned. Captured options flow is scoped to one trading date and the selected session. By default, this route provides the current session, or the last completed session while the market is closed. Totals restart for each new session. Explicit dates can read retained regular-session history (normally five sessions); overnight flow is limited to the most recent session. Session hours follow the underlying's calendar in /v1/options/sessions. Coverage may be partial.",
        "operationId": "optionsFlowPutCallRatio",
        "parameters": [
          {
            "description": "Option root or family: SPX covers the SPX and SPXW roots, SPXW only the weekly root, QQQ, NDXP, RUTW, XSP ...",
            "in": "query",
            "name": "underlying_symbol",
            "required": true,
            "schema": {
              "maxLength": 8,
              "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
              "type": "string"
            }
          },
          {
            "description": "Bucket length: 1m, 5m, 15m, 30m or 1h.",
            "in": "query",
            "name": "interval",
            "required": false,
            "schema": {
              "default": "5m",
              "enum": [
                "1m",
                "5m",
                "15m",
                "30m",
                "1h"
              ],
              "type": "string"
            }
          },
          {
            "description": "Trading date (YYYY-MM-DD). Default: the current session, else the most recent completed one. Overnight prints belong to the next trading date.",
            "in": "query",
            "name": "date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Trading session: rth is the regular session, gth the overnight (global trading hours) session before the trading date, all both. Overnight data requires the Pro plan and exists only for underlyings with an overnight session; GET /v1/options/sessions shows which.",
            "in": "query",
            "name": "session",
            "required": false,
            "schema": {
              "default": "rth",
              "enum": [
                "rth",
                "gth",
                "all"
              ],
              "type": "string"
            }
          },
          {
            "description": "Start of the window (inclusive). The window must lie within one trading session; combine with date to name that session.",
            "in": "query",
            "name": "start_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "End of the window (exclusive).",
            "in": "query",
            "name": "end_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "Calls or puts. Omit for both.",
            "in": "query",
            "name": "contract_type",
            "required": false,
            "schema": {
              "enum": [
                "call",
                "put"
              ],
              "type": "string"
            }
          },
          {
            "description": "Only contracts expiring on this date.",
            "in": "query",
            "name": "date_of_expiry",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Minimum days to expiration (0 = expires on the trading date).",
            "in": "query",
            "name": "min_dte",
            "required": false,
            "schema": {
              "maximum": 3650,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Maximum days to expiration.",
            "in": "query",
            "name": "max_dte",
            "required": false,
            "schema": {
              "maximum": 3650,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Minimum premium in US dollars of a print (price x size x multiplier).",
            "in": "query",
            "name": "min_premium",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": 0,
              "type": "number"
            }
          },
          {
            "description": "Maximum premium in US dollars of a print.",
            "in": "query",
            "name": "max_premium",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": 0,
              "type": "number"
            }
          },
          {
            "description": "Minimum print size in contracts.",
            "in": "query",
            "name": "min_size",
            "required": false,
            "schema": {
              "maximum": 1000000000,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Maximum print size in contracts.",
            "in": "query",
            "name": "max_size",
            "required": false,
            "schema": {
              "maximum": 1000000000,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Comma-separated order types: sweep, block, split, single, golden, multileg, cross, floor, auction, iso. A print matches when any listed type applies. Sweeps and splits are inferred groupings, not exchange-confirmed.",
            "explode": false,
            "in": "query",
            "name": "trade_type",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "sweep",
                  "block",
                  "split",
                  "single",
                  "golden",
                  "multileg",
                  "cross",
                  "floor",
                  "auction",
                  "iso"
                ],
                "type": "string"
              },
              "maxItems": 10,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Comma-separated aggressor classes: above_ask, at_ask, near_ask, mid, near_bid, at_bid, below_bid, unknown. ask selects at_ask and near_ask, bid selects near_bid and at_bid. at_ask without near_ask (and at_bid without near_bid) can be asked for only on /v1/options/trades and /v1/options/flow/overnight; elsewhere use ask and bid.",
            "explode": false,
            "in": "query",
            "name": "side",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "above_ask",
                  "at_ask",
                  "near_ask",
                  "ask",
                  "mid",
                  "near_bid",
                  "at_bid",
                  "bid",
                  "below_bid",
                  "unknown"
                ],
                "type": "string"
              },
              "maxItems": 10,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Comma-separated sentiments: bullish (calls bought or puts sold), bearish (puts bought or calls sold), neutral (traded at the mid) and unknown (direction not determinable).",
            "explode": false,
            "in": "query",
            "name": "sentiment",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "bullish",
                  "bearish",
                  "neutral",
                  "unknown"
                ],
                "type": "string"
              },
              "maxItems": 4,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Only out-of-the-money contracts (strike beyond the underlying price). Prints without a known underlying price are excluded.",
            "in": "query",
            "name": "otm_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Include multi-leg (complex order) prints. Default true.",
            "in": "query",
            "name": "include_complex",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Only unusual activity: volume above open interest within 45 days, premium of at least $250,000, or an out-of-the-money sweep at the ask.",
            "in": "query",
            "name": "unusual_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Lowest strike in dollars.",
            "in": "query",
            "name": "min_strike",
            "required": false,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 1000000,
              "type": "number"
            }
          },
          {
            "description": "Highest strike in dollars.",
            "in": "query",
            "name": "max_strike",
            "required": false,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 1000000,
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "call_premium": 2410000,
                      "call_trades": 410,
                      "call_volume": 9200,
                      "cumulative_put_call_premium_ratio": 0.8493,
                      "cumulative_put_call_volume_ratio": 0.9121,
                      "put_call_premium_ratio": 0.8216,
                      "put_call_volume_ratio": 0.8804,
                      "put_premium": 1980000,
                      "put_trades": 372,
                      "put_volume": 8100,
                      "timestamp": 1792161000000,
                      "underlying_price": 6021.4
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "opra"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/OptionsFlowPutCallRatioRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Put/call volume and premium ratios per bucket and cumulatively.",
        "tags": [
          "options"
        ],
        "x-dataset": "options",
        "x-history-params": [
          "date",
          "start_time",
          "end_time"
        ],
        "x-mcp": true,
        "x-overnight": true,
        "x-stored-session-notice": "Captured options flow is scoped to one trading date and the selected session. By default, this route provides the current session, or the last completed session while the market is closed. Totals restart for each new session. Explicit dates can read retained regular-session history (normally five sessions); overnight flow is limited to the most recent session. Session hours follow the underlying's calendar in /v1/options/sessions. Coverage may be partial.",
        "x-streamable": true
      }
    },
    "/v1/options/flow/stats": {
      "get": {
        "description": "Totals for the prints that match the filters: premium, volume and trades for calls and puts, each split by aggressor class (above the ask, ask side, mid, bid side, below the bid, unknown); the bullish, bearish and neutral premium; put/call ratios; delta notional; counts of sweeps, splits, blocks and golden sweeps; and the largest prints. The ask side is prints at or near the ask, the bid side at or near the bid. Direction that cannot be determined is reported as unknown, never guessed. Delta notional is the customer net delta of the prints in dollars of underlying exposure. Captured options flow is scoped to one trading date and the selected session. By default, this route provides the current session, or the last completed session while the market is closed. Totals restart for each new session. Explicit dates can read retained regular-session history (normally five sessions); overnight flow is limited to the most recent session. Session hours follow the underlying's calendar in /v1/options/sessions. Coverage may be partial.",
        "operationId": "optionsFlowStats",
        "parameters": [
          {
            "description": "Option root or family: SPX covers the SPX and SPXW roots, SPXW only the weekly root, QQQ, NDXP, RUTW, XSP ...",
            "in": "query",
            "name": "underlying_symbol",
            "required": true,
            "schema": {
              "maxLength": 8,
              "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
              "type": "string"
            }
          },
          {
            "description": "Trading date (YYYY-MM-DD). Default: the current session, else the most recent completed one. Overnight prints belong to the next trading date.",
            "in": "query",
            "name": "date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Trading session: rth is the regular session, gth the overnight (global trading hours) session before the trading date, all both. Overnight data requires the Pro plan and exists only for underlyings with an overnight session; GET /v1/options/sessions shows which.",
            "in": "query",
            "name": "session",
            "required": false,
            "schema": {
              "default": "rth",
              "enum": [
                "rth",
                "gth",
                "all"
              ],
              "type": "string"
            }
          },
          {
            "description": "Start of the window (inclusive). The window must lie within one trading session; combine with date to name that session.",
            "in": "query",
            "name": "start_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "End of the window (exclusive).",
            "in": "query",
            "name": "end_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "Calls or puts. Omit for both.",
            "in": "query",
            "name": "contract_type",
            "required": false,
            "schema": {
              "enum": [
                "call",
                "put"
              ],
              "type": "string"
            }
          },
          {
            "description": "Only contracts expiring on this date.",
            "in": "query",
            "name": "date_of_expiry",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Minimum days to expiration (0 = expires on the trading date).",
            "in": "query",
            "name": "min_dte",
            "required": false,
            "schema": {
              "maximum": 3650,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Maximum days to expiration.",
            "in": "query",
            "name": "max_dte",
            "required": false,
            "schema": {
              "maximum": 3650,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Minimum premium in US dollars of a print (price x size x multiplier).",
            "in": "query",
            "name": "min_premium",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": 0,
              "type": "number"
            }
          },
          {
            "description": "Maximum premium in US dollars of a print.",
            "in": "query",
            "name": "max_premium",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": 0,
              "type": "number"
            }
          },
          {
            "description": "Minimum print size in contracts.",
            "in": "query",
            "name": "min_size",
            "required": false,
            "schema": {
              "maximum": 1000000000,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Maximum print size in contracts.",
            "in": "query",
            "name": "max_size",
            "required": false,
            "schema": {
              "maximum": 1000000000,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Comma-separated order types: sweep, block, split, single, golden, multileg, cross, floor, auction, iso. A print matches when any listed type applies. Sweeps and splits are inferred groupings, not exchange-confirmed.",
            "explode": false,
            "in": "query",
            "name": "trade_type",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "sweep",
                  "block",
                  "split",
                  "single",
                  "golden",
                  "multileg",
                  "cross",
                  "floor",
                  "auction",
                  "iso"
                ],
                "type": "string"
              },
              "maxItems": 10,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Comma-separated aggressor classes: above_ask, at_ask, near_ask, mid, near_bid, at_bid, below_bid, unknown. ask selects at_ask and near_ask, bid selects near_bid and at_bid. at_ask without near_ask (and at_bid without near_bid) can be asked for only on /v1/options/trades and /v1/options/flow/overnight; elsewhere use ask and bid.",
            "explode": false,
            "in": "query",
            "name": "side",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "above_ask",
                  "at_ask",
                  "near_ask",
                  "ask",
                  "mid",
                  "near_bid",
                  "at_bid",
                  "bid",
                  "below_bid",
                  "unknown"
                ],
                "type": "string"
              },
              "maxItems": 10,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Comma-separated sentiments: bullish (calls bought or puts sold), bearish (puts bought or calls sold), neutral (traded at the mid) and unknown (direction not determinable).",
            "explode": false,
            "in": "query",
            "name": "sentiment",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "bullish",
                  "bearish",
                  "neutral",
                  "unknown"
                ],
                "type": "string"
              },
              "maxItems": 4,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Only out-of-the-money contracts (strike beyond the underlying price). Prints without a known underlying price are excluded.",
            "in": "query",
            "name": "otm_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Include multi-leg (complex order) prints. Default true.",
            "in": "query",
            "name": "include_complex",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Only unusual activity: volume above open interest within 45 days, premium of at least $250,000, or an out-of-the-money sweep at the ask.",
            "in": "query",
            "name": "unusual_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Lowest strike in dollars.",
            "in": "query",
            "name": "min_strike",
            "required": false,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 1000000,
              "type": "number"
            }
          },
          {
            "description": "Highest strike in dollars.",
            "in": "query",
            "name": "max_strike",
            "required": false,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 1000000,
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "call": {
                      "by_side": {
                        "above_ask": {
                          "premium": 1648000,
                          "trades": 270,
                          "volume": 7280
                        },
                        "ask": {
                          "premium": 14832000,
                          "trades": 1620,
                          "volume": 54600
                        },
                        "below_bid": {
                          "premium": 824000,
                          "trades": 216,
                          "volume": 3640
                        },
                        "bid": {
                          "premium": 12360000,
                          "trades": 1350,
                          "volume": 45500
                        },
                        "mid": {
                          "premium": 8240000,
                          "trades": 1080,
                          "volume": 36400
                        },
                        "unknown": {
                          "premium": 3296000,
                          "trades": 450,
                          "volume": 15166
                        }
                      },
                      "premium": 41200000,
                      "trades": 5400,
                      "volume": 182000
                    },
                    "delta_notional": {
                      "call": 1820000000,
                      "net": 410000000,
                      "put": 1410000000
                    },
                    "largest_prints": [
                      {
                        "contract_type": "call",
                        "date_of_expiry": "2026-10-16",
                        "id": "SPXW:20261016:6050000:C:20261016:48213",
                        "premium": 850000,
                        "price": 3.4,
                        "side": "ask",
                        "size": 2500,
                        "strike": 6050,
                        "timestamp": 1792161012345,
                        "underlying_symbol": "SPXW"
                      }
                    ],
                    "open_interest": {
                      "call": 3120000,
                      "put": 3680000,
                      "put_call": 1.1795
                    },
                    "order_types": {
                      "block": {
                        "count": 96,
                        "premium": 18200000
                      },
                      "cross": {
                        "count": 3,
                        "premium": 380000
                      },
                      "floor": {
                        "count": 1,
                        "premium": 95000
                      },
                      "golden": {
                        "count": 0,
                        "premium": 0
                      },
                      "multileg": {
                        "count": 410,
                        "premium": 6100000
                      },
                      "split": {
                        "count": 212,
                        "premium": 9400000
                      },
                      "sweep": {
                        "count": 0,
                        "premium": 0
                      }
                    },
                    "put": {
                      "by_side": {
                        "above_ask": {
                          "premium": 1352000,
                          "trades": 235,
                          "volume": 6440
                        },
                        "ask": {
                          "premium": 12168000,
                          "trades": 1410,
                          "volume": 48300
                        },
                        "below_bid": {
                          "premium": 676000,
                          "trades": 188,
                          "volume": 3220
                        },
                        "bid": {
                          "premium": 10140000,
                          "trades": 1175,
                          "volume": 40250
                        },
                        "mid": {
                          "premium": 6760000,
                          "trades": 940,
                          "volume": 32200
                        },
                        "unknown": {
                          "premium": 2704000,
                          "trades": 391,
                          "volume": 13416
                        }
                      },
                      "premium": 33800000,
                      "trades": 4700,
                      "volume": 161000
                    },
                    "ratios": {
                      "call_share_of_trades": 0.5347,
                      "put_call_premium": 0.8204,
                      "put_call_trades": 0.8704,
                      "put_call_volume": 0.8846
                    },
                    "sentiment": {
                      "bearish_premium": 17900000,
                      "bullish_premium": 21300000,
                      "label": "bullish",
                      "neutral_premium": 8100000
                    },
                    "session": "rth",
                    "trading_date": "2026-10-16",
                    "underlying_symbol": "SPX"
                  },
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "opra"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/OptionsFlowStatsRow"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Premium, volume and trades of a filtered option print set, by contract type and aggressor side.",
        "tags": [
          "options"
        ],
        "x-dataset": "options",
        "x-history-params": [
          "date",
          "start_time",
          "end_time"
        ],
        "x-mcp": true,
        "x-overnight": true,
        "x-stored-session-notice": "Captured options flow is scoped to one trading date and the selected session. By default, this route provides the current session, or the last completed session while the market is closed. Totals restart for each new session. Explicit dates can read retained regular-session history (normally five sessions); overnight flow is limited to the most recent session. Session hours follow the underlying's calendar in /v1/options/sessions. Coverage may be partial.",
        "x-streamable": true
      }
    },
    "/v1/options/flow/strike-activity": {
      "get": {
        "description": "Premium bought at the ask, sold at the bid and executed elsewhere (inside or outside the spread, or unclassified), volume and trade count at each strike, with the net premium for calls and puts. This view is built from the platform's execution ledger of the SPX and SPXW roots; it classifies only prints exactly at the bid or ask, so use /v1/options/flow/by-strike for the full aggressor breakdown and for other underlyings. Captured options flow is scoped to one trading date and the selected session. By default, this route provides the current session, or the last completed session while the market is closed. Totals restart for each new session. Explicit dates can read retained regular-session history (normally five sessions); overnight flow is limited to the most recent session. Session hours follow the underlying's calendar in /v1/options/sessions. Coverage may be partial.",
        "operationId": "optionsFlowStrikeActivity",
        "parameters": [
          {
            "description": "SPX or SPXW (this view covers those roots only).",
            "in": "query",
            "name": "underlying_symbol",
            "required": true,
            "schema": {
              "maxLength": 8,
              "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
              "type": "string"
            }
          },
          {
            "description": "Trading date (YYYY-MM-DD). Default: the current session.",
            "in": "query",
            "name": "date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Start of the window (inclusive).",
            "in": "query",
            "name": "start_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "End of the window (exclusive).",
            "in": "query",
            "name": "end_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "Minimum premium in US dollars of a print.",
            "in": "query",
            "name": "min_premium",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": 0,
              "type": "number"
            }
          },
          {
            "description": "Calls or puts. Omit for both.",
            "in": "query",
            "name": "contract_type",
            "required": false,
            "schema": {
              "enum": [
                "call",
                "put"
              ],
              "type": "string"
            }
          },
          {
            "description": "Only contracts expiring on this date.",
            "in": "query",
            "name": "date_of_expiry",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "call_ask_premium": 840000,
                      "call_bid_premium": 520000,
                      "call_premium": 2100000,
                      "net_call_premium": 320000,
                      "net_put_premium": -20000,
                      "put_ask_premium": 90000,
                      "put_bid_premium": 110000,
                      "put_premium": 320000,
                      "strike": 6050,
                      "trades": 212,
                      "unclassified_premium": 860000,
                      "volume": 5000
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "opra"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/OptionsFlowStrikeActivityRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Executed premium and trade counts per strike (SPX and SPXW).",
        "tags": [
          "options"
        ],
        "x-dataset": "options",
        "x-history-params": [
          "date",
          "start_time",
          "end_time"
        ],
        "x-stored-session-notice": "Captured options flow is scoped to one trading date and the selected session. By default, this route provides the current session, or the last completed session while the market is closed. Totals restart for each new session. Explicit dates can read retained regular-session history (normally five sessions); overnight flow is limited to the most recent session. Session hours follow the underlying's calendar in /v1/options/sessions. Coverage may be partial.",
        "x-streamable": true
      }
    },
    "/v1/options/flow/unusual": {
      "get": {
        "description": "Consolidated orders that contain unusual activity: volume above open interest within 45 days, a print of at least $250,000 premium, or an out-of-the-money sweep at the ask. Rows have the shape of /v1/options/flow; the same filters apply except unusual_only. Rows are newest first; next_cursor_id pages back through the session and stays valid across restarts for 24 hours. Only prints retained by the platform can be served: roughly the last five sessions, and overnight prints only for the most recent session. Requesting an older session starts a load and answers 503 data_pending with retry_after_ms. A print cancelled after it was served is not recalled, and prints backfilled behind a cursor's position can be missed by a walk in progress; re-read the session for a complete view. Captured options flow is scoped to one trading date and the selected session. By default, this route provides the current session, or the last completed session while the market is closed. Totals restart for each new session. Explicit dates can read retained regular-session history (normally five sessions); overnight flow is limited to the most recent session. Session hours follow the underlying's calendar in /v1/options/sessions. Coverage may be partial.",
        "operationId": "optionsFlowUnusual",
        "parameters": [
          {
            "description": "Option root or family: SPX returns the SPX and SPXW roots, SPXW only the weekly root, QQQ, NDXP, RUTW, XSP ... Give this or underlying_symbols.",
            "in": "query",
            "name": "underlying_symbol",
            "required": false,
            "schema": {
              "maxLength": 8,
              "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
              "type": "string"
            }
          },
          {
            "description": "Several underlyings in one request, comma separated, at most 10 (for example SPX,SPY,QQQ). Use either underlying_symbol or underlying_symbols.",
            "explode": false,
            "in": "query",
            "name": "underlying_symbols",
            "required": false,
            "schema": {
              "items": {
                "maxLength": 128,
                "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
                "type": "string"
              },
              "maxItems": 10,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Trading date (YYYY-MM-DD). Default: the current session, else the most recent completed one. Overnight prints belong to the next trading date.",
            "in": "query",
            "name": "date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Trading session: rth is the regular session, gth the overnight (global trading hours) session before the trading date, all both. Overnight data requires the Pro plan and exists only for underlyings with an overnight session; GET /v1/options/sessions shows which.",
            "in": "query",
            "name": "session",
            "required": false,
            "schema": {
              "default": "rth",
              "enum": [
                "rth",
                "gth",
                "all"
              ],
              "type": "string"
            }
          },
          {
            "description": "Start of the window (inclusive). The window must lie within one trading session; combine with date to name that session.",
            "in": "query",
            "name": "start_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "End of the window (exclusive).",
            "in": "query",
            "name": "end_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "Calls or puts. Omit for both.",
            "in": "query",
            "name": "contract_type",
            "required": false,
            "schema": {
              "enum": [
                "call",
                "put"
              ],
              "type": "string"
            }
          },
          {
            "description": "Only contracts expiring on this date.",
            "in": "query",
            "name": "date_of_expiry",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Minimum days to expiration (0 = expires on the trading date).",
            "in": "query",
            "name": "min_dte",
            "required": false,
            "schema": {
              "maximum": 3650,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Maximum days to expiration.",
            "in": "query",
            "name": "max_dte",
            "required": false,
            "schema": {
              "maximum": 3650,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Minimum premium in US dollars of a print (price x size x multiplier).",
            "in": "query",
            "name": "min_premium",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": 0,
              "type": "number"
            }
          },
          {
            "description": "Maximum premium in US dollars of a print.",
            "in": "query",
            "name": "max_premium",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": 0,
              "type": "number"
            }
          },
          {
            "description": "Minimum print size in contracts.",
            "in": "query",
            "name": "min_size",
            "required": false,
            "schema": {
              "maximum": 1000000000,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Maximum print size in contracts.",
            "in": "query",
            "name": "max_size",
            "required": false,
            "schema": {
              "maximum": 1000000000,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Comma-separated order types: sweep, block, split, single, golden, multileg, cross, floor, auction, iso. A print matches when any listed type applies. Sweeps and splits are inferred groupings, not exchange-confirmed.",
            "explode": false,
            "in": "query",
            "name": "trade_type",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "sweep",
                  "block",
                  "split",
                  "single",
                  "golden",
                  "multileg",
                  "cross",
                  "floor",
                  "auction",
                  "iso"
                ],
                "type": "string"
              },
              "maxItems": 10,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Comma-separated aggressor classes: above_ask, at_ask, near_ask, mid, near_bid, at_bid, below_bid, unknown. ask selects at_ask and near_ask, bid selects near_bid and at_bid. at_ask without near_ask (and at_bid without near_bid) can be asked for only on /v1/options/trades and /v1/options/flow/overnight; elsewhere use ask and bid.",
            "explode": false,
            "in": "query",
            "name": "side",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "above_ask",
                  "at_ask",
                  "near_ask",
                  "ask",
                  "mid",
                  "near_bid",
                  "at_bid",
                  "bid",
                  "below_bid",
                  "unknown"
                ],
                "type": "string"
              },
              "maxItems": 10,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Comma-separated sentiments: bullish (calls bought or puts sold), bearish (puts bought or calls sold), neutral (traded at the mid) and unknown (direction not determinable).",
            "explode": false,
            "in": "query",
            "name": "sentiment",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "bullish",
                  "bearish",
                  "neutral",
                  "unknown"
                ],
                "type": "string"
              },
              "maxItems": 4,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Only out-of-the-money contracts (strike beyond the underlying price). Prints without a known underlying price are excluded.",
            "in": "query",
            "name": "otm_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Include multi-leg (complex order) prints. Default true.",
            "in": "query",
            "name": "include_complex",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Lowest strike in dollars.",
            "in": "query",
            "name": "min_strike",
            "required": false,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 1000000,
              "type": "number"
            }
          },
          {
            "description": "Highest strike in dollars.",
            "in": "query",
            "name": "max_strike",
            "required": false,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 1000000,
              "type": "number"
            }
          },
          {
            "description": "Maximum rows to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 100,
              "maximum": 500,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Opaque cursor returned as pagination.next_cursor_id; resumes the same query on the next page.",
            "in": "query",
            "name": "cursor_id",
            "required": false,
            "schema": {
              "maxLength": 1024,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "contract_type": "call",
                      "date_of_expiry": "2026-10-16",
                      "days_to_expiry": 0,
                      "end_timestamp": 1792161012912,
                      "exchange_count": 3,
                      "flags": [
                        "iso"
                      ],
                      "id": "SPXW:20261016:12",
                      "is_block": false,
                      "is_golden": false,
                      "legs": 4,
                      "open_interest": 4120,
                      "otm_percent": 0.4787,
                      "premium": 202800,
                      "price": 3.38,
                      "sentiment": "bullish",
                      "side": "ask",
                      "size": 600,
                      "strike": 6050,
                      "timestamp": 1792161012345,
                      "trade_type": "sweep",
                      "underlying_price": 6021.4,
                      "underlying_symbol": "SPXW"
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "opra"
                  },
                  "pagination": {
                    "count": 1,
                    "has_more": false,
                    "limit": 100,
                    "next_cursor_id": null,
                    "next_url": null
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/OptionsFlowUnusualRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "required": [
                    "data",
                    "meta",
                    "pagination"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Unusual option activity as consolidated orders.",
        "tags": [
          "options"
        ],
        "x-dataset": "options",
        "x-history-params": [
          "date",
          "start_time",
          "end_time"
        ],
        "x-mcp": true,
        "x-overnight": true,
        "x-paginated": true,
        "x-stored-session-notice": "Captured options flow is scoped to one trading date and the selected session. By default, this route provides the current session, or the last completed session while the market is closed. Totals restart for each new session. Explicit dates can read retained regular-session history (normally five sessions); overnight flow is limited to the most recent session. Session hours follow the underlying's calendar in /v1/options/sessions. Coverage may be partial."
      }
    },
    "/v1/options/levels": {
      "get": {
        "description": "The strikes that matter in the modeled exposure: call and put walls (overall and nearest the underlying price), the strike of the largest absolute exposure, the gamma flip (the underlying price where net modeled gamma changes sign, nearest the current price; a model-derived level, not an observed one), the largest strike-by-expiration cell, the peak net exposure, gatekeepers between the price and that peak, max pain, the one-standard-deviation expected move of the nearest expiration, the exposure regime and the five largest strikes per side. The regime is positive when net exposure is at least 5% of absolute exposure, negative at -5% or below, else neutral; it is a description of the model and not a forecast. Dealer positioning is a model, not observed: with classic_oi the dealer is assumed long the calls and short the puts of the open interest, with flow_adjusted the classified prints since the open interest date adjust it. Public open interest does not identify who holds a position, so the values are estimates of exposure under that assumption.",
        "operationId": "optionsLevels",
        "parameters": [
          {
            "description": "Option root or family: SPX covers the SPX and SPXW roots, SPXW only the weekly root, QQQ, NDXP, RUTW, XSP ...",
            "in": "query",
            "name": "underlying_symbol",
            "required": true,
            "schema": {
              "maxLength": 8,
              "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
              "type": "string"
            }
          },
          {
            "description": "Trading date (YYYY-MM-DD). Default: the current session, else the most recent completed one.",
            "in": "query",
            "name": "date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Trading session: rth is the regular session, gth the overnight (global trading hours) session before the trading date. Overnight data requires the Pro plan and exists only for underlyings with an overnight session; GET /v1/options/sessions shows which.",
            "in": "query",
            "name": "session",
            "required": false,
            "schema": {
              "default": "rth",
              "enum": [
                "rth",
                "gth"
              ],
              "type": "string"
            }
          },
          {
            "description": "Calls or puts. Omit for both.",
            "in": "query",
            "name": "contract_type",
            "required": false,
            "schema": {
              "enum": [
                "call",
                "put"
              ],
              "type": "string"
            }
          },
          {
            "description": "Only this expiration.",
            "in": "query",
            "name": "date_of_expiry",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Only these expirations, comma separated (YYYY-MM-DD), at most 64. Unlisted dates are ignored.",
            "explode": false,
            "in": "query",
            "name": "expirations",
            "required": false,
            "schema": {
              "items": {
                "maxLength": 128,
                "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$",
                "type": "string"
              },
              "maxItems": 64,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Expiration set: 0dte, 1dte, weekly (within 7 days), monthly (third-Friday expirations), lte30 or lte90 (within 30 or 90 days).",
            "in": "query",
            "name": "expiry_mode",
            "required": false,
            "schema": {
              "enum": [
                "0dte",
                "1dte",
                "weekly",
                "monthly",
                "lte30",
                "lte90"
              ],
              "type": "string"
            }
          },
          {
            "description": "Minimum days to expiration (0 = expires on the trading date).",
            "in": "query",
            "name": "min_dte",
            "required": false,
            "schema": {
              "maximum": 3650,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Maximum days to expiration.",
            "in": "query",
            "name": "max_dte",
            "required": false,
            "schema": {
              "maximum": 3650,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "The exposure measured: gamma, delta, vanna or charm.",
            "in": "query",
            "name": "greek",
            "required": false,
            "schema": {
              "default": "gamma",
              "enum": [
                "gamma",
                "delta",
                "vanna",
                "charm"
              ],
              "type": "string"
            }
          },
          {
            "description": "Scale of the values: per_percent (dollars of dealer hedging per 1% move of the underlying), per_dollar (per $1 move) or raw (shares, or per unit of the greek).",
            "in": "query",
            "name": "unit",
            "required": false,
            "schema": {
              "default": "per_percent",
              "enum": [
                "per_percent",
                "per_dollar",
                "raw"
              ],
              "type": "string"
            }
          },
          {
            "description": "Dealer positioning model: classic_oi (open interest, calls long and puts short) or flow_adjusted (adjusted by classified prints since the open interest date).",
            "in": "query",
            "name": "model",
            "required": false,
            "schema": {
              "default": "classic_oi",
              "enum": [
                "classic_oi",
                "flow_adjusted"
              ],
              "type": "string"
            }
          },
          {
            "description": "dealer (default) or customer, which negates the values only.",
            "in": "query",
            "name": "perspective",
            "required": false,
            "schema": {
              "default": "dealer",
              "enum": [
                "dealer",
                "customer"
              ],
              "type": "string"
            }
          },
          {
            "description": "Optional key levels to compute: vanna, charm, delta.",
            "explode": false,
            "in": "query",
            "name": "include",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "vanna",
                  "charm",
                  "delta"
                ],
                "type": "string"
              },
              "maxItems": 3,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Gatekeepers are strikes between the underlying price and the peak net exposure with at least this fraction of its absolute exposure.",
            "in": "query",
            "name": "gatekeeper_ratio",
            "required": false,
            "schema": {
              "default": 0.4,
              "maximum": 0.9,
              "minimum": 0.1,
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "greek": "gamma",
                    "levels": {
                      "call_wall": 6050,
                      "call_wall_above": 6050,
                      "charm_max_absolute_strike": null,
                      "delta_key_strike": null,
                      "expected_move": {
                        "date_of_expiry": "2026-10-16",
                        "expected_move": 24.6,
                        "implied_volatility": 0.142,
                        "one_sigma_band": [
                          5996.8,
                          6046
                        ],
                        "straddle": 19.7,
                        "straddle_expected_move": 24.6,
                        "two_sigma_band": [
                          5972.2,
                          6070.6
                        ]
                      },
                      "gamma_flip": 5934.5,
                      "gamma_flip_candidates": [
                        5934.5
                      ],
                      "gamma_flip_excluding_0dte": 5961,
                      "gamma_flip_far_from_underlying": false,
                      "gamma_tilt": 0.92,
                      "gatekeepers": [],
                      "largest_absolute_strike": 6000,
                      "largest_cell": {
                        "date_of_expiry": "2026-10-16",
                        "strike": 6000,
                        "value": -338000000
                      },
                      "major_negative": 5950,
                      "major_positive": 6050,
                      "max_pain": {
                        "date_of_expiry": "2026-10-16",
                        "strike": 6000
                      },
                      "next_expiration_share": 0.27,
                      "peak_net_exposure": {
                        "strike": 6000,
                        "value": -417000000
                      },
                      "put_wall": 5950,
                      "put_wall_below": 5950,
                      "regime": {
                        "absolute": 28800000000,
                        "label": "neutral",
                        "net": -1200000000,
                        "ratio": -0.0422,
                        "underlying_vs_gamma_flip": "above"
                      },
                      "vanna_levels": null
                    },
                    "model": "classic_oi",
                    "perspective": "dealer",
                    "positioning_model": "oi_signed_proxy-v1",
                    "ranked": {
                      "calls": [
                        {
                          "distance_percent": -0.3554,
                          "distance_points": -21.4,
                          "rank": 1,
                          "strike": 6000,
                          "value": 6050000000
                        }
                      ],
                      "gross": [],
                      "net": [],
                      "puts": []
                    },
                    "roots": [
                      "SPX",
                      "SPXW"
                    ],
                    "session": "rth",
                    "trading_date": "2026-10-16",
                    "underlying_price": 6021.4,
                    "underlying_symbol": "SPX",
                    "unit": "per_percent",
                    "unit_label": "usd_per_pct",
                    "valuation": {
                      "chain_timestamp": 1792160995000,
                      "open_interest_date": "2026-10-15",
                      "risk_free_rate": 0.0412,
                      "timestamp": 1792161000000,
                      "underlying_price": 6021.4,
                      "underlying_stale": false,
                      "underlying_timestamp": 1792160999000
                    }
                  },
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "opra"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/OptionsLevelsRow"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Key levels of the modeled dealer exposure: walls, gamma flip, largest cell, max pain, expected move.",
        "tags": [
          "options"
        ],
        "x-dataset": "options",
        "x-history-params": [
          "date"
        ],
        "x-mcp": true,
        "x-overnight": true,
        "x-streamable": true
      }
    },
    "/v1/options/levels/history": {
      "get": {
        "description": "The gamma flip, call wall, put wall, largest absolute gamma strike, largest cell strike and net gamma exposure at each bucket of a session, with the underlying price, from the retained minute timelines. Buckets without a valuation are omitted. Sessions older than the retained timelines are not available. Dealer positioning is a model, not observed: with classic_oi the dealer is assumed long the calls and short the puts of the open interest, with flow_adjusted the classified prints since the open interest date adjust it. Public open interest does not identify who holds a position, so the values are estimates of exposure under that assumption.",
        "operationId": "optionsLevelsHistory",
        "parameters": [
          {
            "description": "Option root or family: SPX covers the SPX and SPXW roots, SPXW only the weekly root, QQQ, NDXP, RUTW, XSP ...",
            "in": "query",
            "name": "underlying_symbol",
            "required": true,
            "schema": {
              "maxLength": 8,
              "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
              "type": "string"
            }
          },
          {
            "description": "Trading date (YYYY-MM-DD). Default: the most recent session.",
            "in": "query",
            "name": "date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Trading session: rth is the regular session, gth the overnight (global trading hours) session before the trading date. Overnight data requires the Pro plan and exists only for underlyings with an overnight session; GET /v1/options/sessions shows which.",
            "in": "query",
            "name": "session",
            "required": false,
            "schema": {
              "default": "rth",
              "enum": [
                "rth",
                "gth"
              ],
              "type": "string"
            }
          },
          {
            "description": "Calls or puts. Omit for both.",
            "in": "query",
            "name": "contract_type",
            "required": false,
            "schema": {
              "enum": [
                "call",
                "put"
              ],
              "type": "string"
            }
          },
          {
            "description": "Only this expiration.",
            "in": "query",
            "name": "date_of_expiry",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Minimum days to expiration (0 = expires on the trading date).",
            "in": "query",
            "name": "min_dte",
            "required": false,
            "schema": {
              "maximum": 3650,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Maximum days to expiration.",
            "in": "query",
            "name": "max_dte",
            "required": false,
            "schema": {
              "maximum": 3650,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Bucket length: 5m, 15m, 30m or 1h (the gamma flip needs at least 5m).",
            "in": "query",
            "name": "interval",
            "required": false,
            "schema": {
              "default": "5m",
              "enum": [
                "5m",
                "15m",
                "30m",
                "1h"
              ],
              "type": "string"
            }
          },
          {
            "description": "Scale of the net exposure.",
            "in": "query",
            "name": "unit",
            "required": false,
            "schema": {
              "default": "per_percent",
              "enum": [
                "per_percent",
                "per_dollar",
                "raw"
              ],
              "type": "string"
            }
          },
          {
            "description": "Dealer positioning model.",
            "in": "query",
            "name": "model",
            "required": false,
            "schema": {
              "default": "classic_oi",
              "enum": [
                "classic_oi",
                "flow_adjusted"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "call_wall": 6050,
                      "gamma_flip": 5934.5,
                      "largest_absolute_gamma_strike": 6000,
                      "largest_cell_strike": 6000,
                      "net_exposure": -1200000000,
                      "put_wall": 5950,
                      "timestamp": 1792161000000,
                      "underlying_price": 6021.4
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "opra"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/OptionsLevelsHistoryRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Key levels of the modeled gamma exposure through a session.",
        "tags": [
          "options"
        ],
        "x-dataset": "options",
        "x-history-params": [
          "date"
        ],
        "x-overnight": true
      }
    },
    "/v1/options/market-map": {
      "get": {
        "description": "A one-view picture of where positioning and activity sit: at each strike the modeled dealer gamma exposure (calls, puts, net, gross) next to the premium executed there, with the totals and, when fresh references exist, the mapping from the index to its dated futures contract. It covers the live SPX and SPXW chain only and requires fresh chain and underlying inputs. Exposure uses the classic open interest model. Dealer positioning is a model, not observed: with classic_oi the dealer is assumed long the calls and short the puts of the open interest, with flow_adjusted the classified prints since the open interest date adjust it. Public open interest does not identify who holds a position, so the values are estimates of exposure under that assumption.",
        "operationId": "optionsMarketMap",
        "parameters": [
          {
            "description": "SPX or SPXW (this view covers those roots only).",
            "in": "query",
            "name": "underlying_symbol",
            "required": true,
            "schema": {
              "maxLength": 8,
              "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
              "type": "string"
            }
          },
          {
            "description": "Only expirations within this many days.",
            "in": "query",
            "name": "max_dte",
            "required": false,
            "schema": {
              "maximum": 3650,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Only this expiration.",
            "in": "query",
            "name": "date_of_expiry",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Calls or puts. Omit for both.",
            "in": "query",
            "name": "contract_type",
            "required": false,
            "schema": {
              "enum": [
                "call",
                "put"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "exposure_model": "oi_signed_proxy-v1",
                    "exposure_unit": "USD per 1% spot move",
                    "flow": {
                      "call_premium": 41200000,
                      "net_call_premium": 6180000,
                      "net_put_premium": 5070000,
                      "put_premium": 33800000,
                      "trades": 10100,
                      "volume": 343000
                    },
                    "futures_mapping": {
                      "basis": 30.35,
                      "contract": "ESZ6",
                      "futures_reference": 6051.75,
                      "index_reference": 6021.4
                    },
                    "strikes": [
                      {
                        "call_exposure": 6050000000,
                        "call_premium": 2100000,
                        "gross_exposure": 12520000000,
                        "net_call_premium": 320000,
                        "net_exposure": -420000000,
                        "net_put_premium": -20000,
                        "put_exposure": -6470000000,
                        "put_premium": 320000,
                        "strike": 6000,
                        "trades": 212,
                        "volume": 5000
                      }
                    ],
                    "totals": {
                      "call": 13800000000,
                      "gross": 28800000000,
                      "net": -1200000000,
                      "put": -15000000000
                    },
                    "underlying_price": 6021.4,
                    "underlying_symbol": "SPX"
                  },
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "opra"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/OptionsMarketMapRow"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Modeled exposure and executed flow by strike for SPX and SPXW.",
        "tags": [
          "options"
        ],
        "x-dataset": "options",
        "x-mcp": true,
        "x-streamable": true
      }
    },
    "/v1/options/max-pain": {
      "get": {
        "description": "The settlement price at which the total payout to option holders is smallest, computed from open interest, for one expiration (by default the nearest): the payout of calls and puts at every strike, the max pain of each listed expiration, and how the max pain of the chosen expiration moved over the stored open interest dates. Open interest is the previous close's, so the figures do not move intraday.",
        "operationId": "optionsMaxPain",
        "parameters": [
          {
            "description": "Option root or family: SPX covers the SPX and SPXW roots, SPXW only the weekly root, QQQ, NDXP, RUTW, XSP ...",
            "in": "query",
            "name": "underlying_symbol",
            "required": true,
            "schema": {
              "maxLength": 8,
              "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
              "type": "string"
            }
          },
          {
            "description": "The expiration to analyse. Default: the nearest.",
            "in": "query",
            "name": "date_of_expiry",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Trading date (YYYY-MM-DD). Default: the most recent session.",
            "in": "query",
            "name": "date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Longest expiration, in days, in by_expiration.",
            "in": "query",
            "name": "max_dte",
            "required": false,
            "schema": {
              "default": 90,
              "maximum": 400,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Include how the max pain moved over the stored open interest dates (up to 30). Default true.",
            "in": "query",
            "name": "include_history",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "by_expiration": [
                      {
                        "date_of_expiry": "2026-10-16",
                        "days_to_expiry": 0,
                        "max_pain": 6000,
                        "total_open_interest": 63250
                      }
                    ],
                    "date_of_expiry": "2026-10-16",
                    "history": [
                      {
                        "date": "2026-10-15",
                        "max_pain": 6000
                      }
                    ],
                    "max_pain": 6000,
                    "open_interest_date": "2026-10-15",
                    "payouts": [
                      {
                        "call_payout": 51000000,
                        "put_payout": 44000000,
                        "strike": 6000,
                        "total_payout": 95000000
                      }
                    ],
                    "trading_date": "2026-10-16",
                    "underlying_price": 6021.4,
                    "underlying_symbol": "SPX"
                  },
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "opra"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/OptionsMaxPainRow"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Max pain strike of an expiration, its payout curve and the max pain of every expiration.",
        "tags": [
          "options"
        ],
        "x-dataset": "options",
        "x-history-params": [
          "date"
        ],
        "x-mcp": true
      }
    },
    "/v1/options/open-interest": {
      "get": {
        "description": "The open interest of calls and puts at each strike or each expiration, the totals and the put/call ratio. Open interest is the previous close's figure, published each morning, so it does not move during the session. Narrow the rows with date_of_expiry, expirations, expiry_mode or the DTE bounds and with the strike window.",
        "operationId": "optionsOpenInterest",
        "parameters": [
          {
            "description": "Option root or family: SPX covers the SPX and SPXW roots, SPXW only the weekly root, QQQ, NDXP, RUTW, XSP ...",
            "in": "query",
            "name": "underlying_symbol",
            "required": true,
            "schema": {
              "maxLength": 8,
              "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
              "type": "string"
            }
          },
          {
            "description": "Trading date (YYYY-MM-DD). Default: the current session, else the most recent completed one.",
            "in": "query",
            "name": "date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Only this expiration.",
            "in": "query",
            "name": "date_of_expiry",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Only these expirations, comma separated (YYYY-MM-DD), at most 64. Unlisted dates are ignored.",
            "explode": false,
            "in": "query",
            "name": "expirations",
            "required": false,
            "schema": {
              "items": {
                "maxLength": 128,
                "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$",
                "type": "string"
              },
              "maxItems": 64,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Expiration set: 0dte, 1dte, weekly (within 7 days), monthly (third-Friday expirations), lte30 or lte90 (within 30 or 90 days).",
            "in": "query",
            "name": "expiry_mode",
            "required": false,
            "schema": {
              "enum": [
                "0dte",
                "1dte",
                "weekly",
                "monthly",
                "lte30",
                "lte90"
              ],
              "type": "string"
            }
          },
          {
            "description": "Minimum days to expiration (0 = expires on the trading date).",
            "in": "query",
            "name": "min_dte",
            "required": false,
            "schema": {
              "maximum": 3650,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Maximum days to expiration.",
            "in": "query",
            "name": "max_dte",
            "required": false,
            "schema": {
              "maximum": 3650,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Lowest strike in dollars.",
            "in": "query",
            "name": "min_strike",
            "required": false,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 1000000,
              "type": "number"
            }
          },
          {
            "description": "Highest strike in dollars.",
            "in": "query",
            "name": "max_strike",
            "required": false,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 1000000,
              "type": "number"
            }
          },
          {
            "description": "This many listed strikes either side of the strike nearest the underlying price.",
            "in": "query",
            "name": "strikes_around",
            "required": false,
            "schema": {
              "maximum": 500,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Strikes within this percent of the underlying price.",
            "in": "query",
            "name": "strike_percent",
            "required": false,
            "schema": {
              "maximum": 100,
              "minimum": 0.1,
              "type": "number"
            }
          },
          {
            "description": "Rows per strike or per expiration.",
            "in": "query",
            "name": "group_by",
            "required": false,
            "schema": {
              "default": "strike",
              "enum": [
                "strike",
                "expiration"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "group_by": "strike",
                    "open_interest_date": "2026-10-15",
                    "roots": [
                      "SPX",
                      "SPXW"
                    ],
                    "rows": [
                      {
                        "call_open_interest": 22440,
                        "put_open_interest": 23940,
                        "strike": 6000,
                        "total_open_interest": 46380
                      }
                    ],
                    "totals": {
                      "call": 3120000,
                      "put": 3680000,
                      "put_call_ratio": 1.1795
                    },
                    "trading_date": "2026-10-16",
                    "underlying_price": 6021.4,
                    "underlying_symbol": "SPX"
                  },
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "opra"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/OptionsOpenInterestRow"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Open interest by strike or by expiration.",
        "tags": [
          "options"
        ],
        "x-dataset": "options",
        "x-history-params": [
          "date"
        ],
        "x-mcp": true,
        "x-streamable": true
      }
    },
    "/v1/options/open-interest/change": {
      "get": {
        "description": "The contracts whose open interest changed between the two most recent open interest dates, with the previous and current figures, the change and the percent change; contracts new on the latest date are flagged. Sorted by the size of the change unless sort says otherwise. Pages follow a snapshot by row offset: if the underlying data was refreshed between pages the response carries the warning snapshot_changed, and rows may repeat or be skipped.",
        "operationId": "optionsOpenInterestChange",
        "parameters": [
          {
            "description": "Option root or family: SPX covers the SPX and SPXW roots, SPXW only the weekly root, QQQ, NDXP, RUTW, XSP ...",
            "in": "query",
            "name": "underlying_symbol",
            "required": true,
            "schema": {
              "maxLength": 8,
              "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
              "type": "string"
            }
          },
          {
            "description": "Trading date (YYYY-MM-DD). Default: the most recent open interest date.",
            "in": "query",
            "name": "date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Calls or puts. Omit for both.",
            "in": "query",
            "name": "contract_type",
            "required": false,
            "schema": {
              "enum": [
                "call",
                "put"
              ],
              "type": "string"
            }
          },
          {
            "description": "Only this expiration.",
            "in": "query",
            "name": "date_of_expiry",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Only these expirations, comma separated (YYYY-MM-DD), at most 64.",
            "explode": false,
            "in": "query",
            "name": "expirations",
            "required": false,
            "schema": {
              "items": {
                "maxLength": 128,
                "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$",
                "type": "string"
              },
              "maxItems": 64,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Expiration set: 0dte, 1dte, weekly, monthly, lte30 or lte90.",
            "in": "query",
            "name": "expiry_mode",
            "required": false,
            "schema": {
              "enum": [
                "0dte",
                "1dte",
                "weekly",
                "monthly",
                "lte30",
                "lte90"
              ],
              "type": "string"
            }
          },
          {
            "description": "Minimum days to expiration (0 = expires on the trading date).",
            "in": "query",
            "name": "min_dte",
            "required": false,
            "schema": {
              "maximum": 3650,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Maximum days to expiration.",
            "in": "query",
            "name": "max_dte",
            "required": false,
            "schema": {
              "maximum": 3650,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Lowest strike in dollars.",
            "in": "query",
            "name": "min_strike",
            "required": false,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 1000000,
              "type": "number"
            }
          },
          {
            "description": "Highest strike in dollars.",
            "in": "query",
            "name": "max_strike",
            "required": false,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 1000000,
              "type": "number"
            }
          },
          {
            "description": "Minimum absolute change in contracts.",
            "in": "query",
            "name": "min_change",
            "required": false,
            "schema": {
              "maximum": 1000000000,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Minimum absolute change in percent.",
            "in": "query",
            "name": "min_change_percent",
            "required": false,
            "schema": {
              "maximum": 1000000000,
              "minimum": 0,
              "type": "number"
            }
          },
          {
            "description": "Sort field: abs_change (default), change, change_percent, current or previous.",
            "in": "query",
            "name": "sort",
            "required": false,
            "schema": {
              "default": "abs_change",
              "enum": [
                "abs_change",
                "change",
                "change_percent",
                "current",
                "previous"
              ],
              "type": "string"
            }
          },
          {
            "description": "Descending (largest first) or ascending.",
            "in": "query",
            "name": "order",
            "required": false,
            "schema": {
              "default": "desc",
              "enum": [
                "desc",
                "asc"
              ],
              "type": "string"
            }
          },
          {
            "description": "Maximum rows to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 100,
              "maximum": 500,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Opaque cursor returned as pagination.next_cursor_id; resumes the same query on the next page.",
            "in": "query",
            "name": "cursor_id",
            "required": false,
            "schema": {
              "maxLength": 1024,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "change": 5900,
                      "change_percent": 32.42,
                      "contract_type": "call",
                      "current_open_interest": 24100,
                      "date_of_expiry": "2026-10-16",
                      "is_new_listing": false,
                      "previous_open_interest": 18200,
                      "strike": 6050,
                      "underlying_symbol": "SPXW"
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "opra"
                  },
                  "pagination": {
                    "count": 1,
                    "has_more": false,
                    "limit": 100,
                    "next_cursor_id": null,
                    "next_url": null
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/OptionsOpenInterestChangeRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "required": [
                    "data",
                    "meta",
                    "pagination"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Change in open interest per contract between the two latest open interest dates.",
        "tags": [
          "options"
        ],
        "x-dataset": "options",
        "x-history-params": [
          "date"
        ],
        "x-mcp": true,
        "x-paginated": true
      }
    },
    "/v1/options/open-interest/history": {
      "get": {
        "description": "The call, put and total open interest of the selected contracts on each date the platform stored, oldest first (up to about 30 dates). Select an expiration or a strike range to follow a part of the chain. Dates with no stored figure are returned with null values.",
        "operationId": "optionsOpenInterestHistory",
        "parameters": [
          {
            "description": "Option root or family: SPX covers the SPX and SPXW roots, SPXW only the weekly root, QQQ, NDXP, RUTW, XSP ...",
            "in": "query",
            "name": "underlying_symbol",
            "required": true,
            "schema": {
              "maxLength": 8,
              "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
              "type": "string"
            }
          },
          {
            "description": "Calls or puts. Omit for both.",
            "in": "query",
            "name": "contract_type",
            "required": false,
            "schema": {
              "enum": [
                "call",
                "put"
              ],
              "type": "string"
            }
          },
          {
            "description": "Only this expiration.",
            "in": "query",
            "name": "date_of_expiry",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Only these expirations, comma separated (YYYY-MM-DD), at most 64.",
            "explode": false,
            "in": "query",
            "name": "expirations",
            "required": false,
            "schema": {
              "items": {
                "maxLength": 128,
                "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$",
                "type": "string"
              },
              "maxItems": 64,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Lowest strike in dollars.",
            "in": "query",
            "name": "min_strike",
            "required": false,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 1000000,
              "type": "number"
            }
          },
          {
            "description": "Highest strike in dollars.",
            "in": "query",
            "name": "max_strike",
            "required": false,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 1000000,
              "type": "number"
            }
          },
          {
            "description": "This many listed strikes either side of the strike nearest the underlying price.",
            "in": "query",
            "name": "strikes_around",
            "required": false,
            "schema": {
              "maximum": 500,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Strikes within this percent of the underlying price.",
            "in": "query",
            "name": "strike_percent",
            "required": false,
            "schema": {
              "maximum": 100,
              "minimum": 0.1,
              "type": "number"
            }
          },
          {
            "description": "Start of the series. Default: 30 days before end_time (within your plan's history window).",
            "in": "query",
            "name": "start_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "End of the series. Default: now.",
            "in": "query",
            "name": "end_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "call_open_interest": 3120000,
                      "date": "2026-10-15",
                      "put_open_interest": 3680000,
                      "total_open_interest": 6800000
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "opra"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/OptionsOpenInterestHistoryRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Open interest per stored date for a selection of contracts.",
        "tags": [
          "options"
        ],
        "x-dataset": "options",
        "x-history-params": [
          "start_time",
          "end_time"
        ],
        "x-mcp": true
      }
    },
    "/v1/options/screener": {
      "get": {
        "description": "Filters, sorts and pages the tracked contracts (grain=contract) or underlyings (grain=ticker) by their flow of the session, open interest, implied volatility, greeks, modeled dealer exposure and, for underlyings, volatility rank and gamma regime. Presets: unusual_activity, large_premium, sweeps, golden_sweeps, blocks, vol_gt_oi, zero_dte, zero_dte_lottos, high_iv, near_spot_gamma, bullish_flow, bearish_flow, oi_gainers, leaps_accumulation, unusual_short_otm, repeated_hits, call_sells, put_sells, overnight_spx, negative_gamma, near_walls, high_iv_rank, cheap_vol, iv_movers, backwardation. Contract presets are screens such as unusual_activity, large_premium, sweeps and 0dte; the last six are underlying screens. The screened universe is the underlyings the platform tabulates, listed in meta.coverage. Pages follow a snapshot by row offset (up to 10,000 rows); if the data was refreshed between pages the response carries the warning snapshot_changed. Gamma exposures are modeled estimates. Dealer positioning is a model, not observed: with classic_oi the dealer is assumed long the calls and short the puts of the open interest, with flow_adjusted the classified prints since the open interest date adjust it. Public open interest does not identify who holds a position, so the values are estimates of exposure under that assumption.",
        "operationId": "optionsScreener",
        "parameters": [
          {
            "description": "Rows per contract or per underlying.",
            "in": "query",
            "name": "grain",
            "required": false,
            "schema": {
              "default": "contract",
              "enum": [
                "contract",
                "ticker"
              ],
              "type": "string"
            }
          },
          {
            "description": "A saved screen of the chosen grain; explicit filters override its criteria. See the description for the list.",
            "in": "query",
            "name": "preset",
            "required": false,
            "schema": {
              "enum": [
                "unusual_activity",
                "large_premium",
                "sweeps",
                "golden_sweeps",
                "blocks",
                "vol_gt_oi",
                "zero_dte",
                "zero_dte_lottos",
                "high_iv",
                "near_spot_gamma",
                "bullish_flow",
                "bearish_flow",
                "oi_gainers",
                "leaps_accumulation",
                "unusual_short_otm",
                "repeated_hits",
                "call_sells",
                "put_sells",
                "overnight_spx",
                "negative_gamma",
                "near_walls",
                "high_iv_rank",
                "cheap_vol",
                "iv_movers",
                "backwardation"
              ],
              "type": "string"
            }
          },
          {
            "description": "Underlyings to screen, comma separated, at most 50. Default: every underlying the platform tabulates.",
            "explode": false,
            "in": "query",
            "name": "underlying_symbols",
            "required": false,
            "schema": {
              "items": {
                "maxLength": 128,
                "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
                "type": "string"
              },
              "maxItems": 50,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Trading date (YYYY-MM-DD). Default: the current session, else the most recent completed one.",
            "in": "query",
            "name": "date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Trading session: rth is the regular session, gth the overnight (global trading hours) session before the trading date, all both. Overnight data requires the Pro plan and exists only for underlyings with an overnight session; GET /v1/options/sessions shows which.",
            "in": "query",
            "name": "session",
            "required": false,
            "schema": {
              "default": "rth",
              "enum": [
                "rth",
                "gth",
                "all"
              ],
              "type": "string"
            }
          },
          {
            "description": "Row field to sort by, or abs_<field> for the absolute value. Any numeric field of the grain's rows; default per preset, else premium (contracts) or option_volume (underlyings).",
            "in": "query",
            "name": "sort",
            "required": false,
            "schema": {
              "maxLength": 52,
              "pattern": "^(abs_)?[a-z0-9_]{1,48}$",
              "type": "string"
            }
          },
          {
            "description": "Descending (largest first) or ascending.",
            "in": "query",
            "name": "order",
            "required": false,
            "schema": {
              "default": "desc",
              "enum": [
                "desc",
                "asc"
              ],
              "type": "string"
            }
          },
          {
            "description": "Calls or puts. Omit for both.",
            "in": "query",
            "name": "contract_type",
            "required": false,
            "schema": {
              "enum": [
                "call",
                "put"
              ],
              "type": "string"
            }
          },
          {
            "description": "Contract grain: moneyness classes, comma separated: itm, atm, otm.",
            "explode": false,
            "in": "query",
            "name": "moneyness",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "itm",
                  "atm",
                  "otm"
                ],
                "type": "string"
              },
              "maxItems": 3,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Contract grain: row flags that must all be set: unusual, golden, vol_gt_oi, size_gt_oi, sweep, block, repeated.",
            "explode": false,
            "in": "query",
            "name": "flags",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "unusual",
                  "golden",
                  "vol_gt_oi",
                  "size_gt_oi",
                  "sweep",
                  "block",
                  "repeated"
                ],
                "type": "string"
              },
              "maxItems": 7,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Ticker grain: gamma regimes to include: positive, negative, neutral.",
            "explode": false,
            "in": "query",
            "name": "regime",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "positive",
                  "negative",
                  "neutral"
                ],
                "type": "string"
              },
              "maxItems": 3,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Minimum contracts traded today.",
            "in": "query",
            "name": "min_volume",
            "required": false,
            "schema": {
              "maximum": 1000000000,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Maximum contracts traded today.",
            "in": "query",
            "name": "max_volume",
            "required": false,
            "schema": {
              "maximum": 1000000000,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Minimum open interest.",
            "in": "query",
            "name": "min_open_interest",
            "required": false,
            "schema": {
              "maximum": 1000000000,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Maximum open interest.",
            "in": "query",
            "name": "max_open_interest",
            "required": false,
            "schema": {
              "maximum": 1000000000,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Minimum volume over open interest.",
            "in": "query",
            "name": "min_volume_to_open_interest",
            "required": false,
            "schema": {
              "maximum": 1000000000,
              "minimum": 0,
              "type": "number"
            }
          },
          {
            "description": "Minimum premium traded today in US dollars.",
            "in": "query",
            "name": "min_premium",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": 0,
              "type": "number"
            }
          },
          {
            "description": "Maximum premium traded today in US dollars.",
            "in": "query",
            "name": "max_premium",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": 0,
              "type": "number"
            }
          },
          {
            "description": "Minimum net premium (ask side minus bid side) in US dollars.",
            "in": "query",
            "name": "min_net_premium",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": -1000000000000,
              "type": "number"
            }
          },
          {
            "description": "Minimum days to expiration.",
            "in": "query",
            "name": "min_dte",
            "required": false,
            "schema": {
              "maximum": 3650,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Maximum days to expiration.",
            "in": "query",
            "name": "max_dte",
            "required": false,
            "schema": {
              "maximum": 3650,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Minimum percent out of the money.",
            "in": "query",
            "name": "min_otm_percent",
            "required": false,
            "schema": {
              "maximum": 1000,
              "minimum": -100,
              "type": "number"
            }
          },
          {
            "description": "Maximum percent out of the money.",
            "in": "query",
            "name": "max_otm_percent",
            "required": false,
            "schema": {
              "maximum": 1000,
              "minimum": -100,
              "type": "number"
            }
          },
          {
            "description": "Minimum implied volatility as a decimal.",
            "in": "query",
            "name": "min_implied_volatility",
            "required": false,
            "schema": {
              "maximum": 5,
              "minimum": 0,
              "type": "number"
            }
          },
          {
            "description": "Maximum implied volatility as a decimal.",
            "in": "query",
            "name": "max_implied_volatility",
            "required": false,
            "schema": {
              "maximum": 5,
              "minimum": 0,
              "type": "number"
            }
          },
          {
            "description": "Minimum absolute delta.",
            "in": "query",
            "name": "min_abs_delta",
            "required": false,
            "schema": {
              "maximum": 1,
              "minimum": 0,
              "type": "number"
            }
          },
          {
            "description": "Maximum absolute delta.",
            "in": "query",
            "name": "max_abs_delta",
            "required": false,
            "schema": {
              "maximum": 1,
              "minimum": 0,
              "type": "number"
            }
          },
          {
            "description": "Minimum share of volume at the ask side, percent.",
            "in": "query",
            "name": "min_ask_percent",
            "required": false,
            "schema": {
              "maximum": 100,
              "minimum": 0,
              "type": "number"
            }
          },
          {
            "description": "Minimum share of volume at the bid side, percent.",
            "in": "query",
            "name": "min_bid_percent",
            "required": false,
            "schema": {
              "maximum": 100,
              "minimum": 0,
              "type": "number"
            }
          },
          {
            "description": "Maximum bid/ask spread in percent of the mid.",
            "in": "query",
            "name": "max_spread_percent",
            "required": false,
            "schema": {
              "maximum": 1000000,
              "minimum": 0,
              "type": "number"
            }
          },
          {
            "description": "Maximum share of volume in multi-leg prints, percent.",
            "in": "query",
            "name": "max_multileg_percent",
            "required": false,
            "schema": {
              "maximum": 100,
              "minimum": 0,
              "type": "number"
            }
          },
          {
            "description": "Minimum sweep premium in US dollars (per contract, or per underlying for the ticker grain).",
            "in": "query",
            "name": "min_sweep_premium",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": 0,
              "type": "number"
            }
          },
          {
            "description": "Minimum premium of the largest print in US dollars.",
            "in": "query",
            "name": "min_largest_print_premium",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": 0,
              "type": "number"
            }
          },
          {
            "description": "Minimum open interest change in contracts.",
            "in": "query",
            "name": "min_open_interest_change",
            "required": false,
            "schema": {
              "maximum": 1000000000,
              "minimum": -1000000000,
              "type": "integer"
            }
          },
          {
            "description": "Minimum open interest change in percent.",
            "in": "query",
            "name": "min_open_interest_change_percent",
            "required": false,
            "schema": {
              "maximum": 1000000000,
              "minimum": -1000000000,
              "type": "number"
            }
          },
          {
            "description": "Minimum bursts of five or more same-side prints within 100 ms.",
            "in": "query",
            "name": "min_repeated_hit_count",
            "required": false,
            "schema": {
              "maximum": 1000000,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Minimum last price.",
            "in": "query",
            "name": "min_last_price",
            "required": false,
            "schema": {
              "maximum": 1000000000,
              "minimum": 0,
              "type": "number"
            }
          },
          {
            "description": "Maximum mid price.",
            "in": "query",
            "name": "max_mid_price",
            "required": false,
            "schema": {
              "maximum": 1000000000,
              "minimum": 0,
              "type": "number"
            }
          },
          {
            "description": "Ticker grain: underlying price. (minimum).",
            "in": "query",
            "name": "min_underlying_price",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": -1000000000000,
              "type": "number"
            }
          },
          {
            "description": "Ticker grain: underlying price. (maximum).",
            "in": "query",
            "name": "max_underlying_price",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": -1000000000000,
              "type": "number"
            }
          },
          {
            "description": "Ticker grain: change in percent. (minimum).",
            "in": "query",
            "name": "min_change_percent",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": -1000000000000,
              "type": "number"
            }
          },
          {
            "description": "Ticker grain: change in percent. (maximum).",
            "in": "query",
            "name": "max_change_percent",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": -1000000000000,
              "type": "number"
            }
          },
          {
            "description": "Ticker grain: option contracts traded today. (minimum).",
            "in": "query",
            "name": "min_option_volume",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": -1000000000000,
              "type": "number"
            }
          },
          {
            "description": "Ticker grain: option contracts traded today. (maximum).",
            "in": "query",
            "name": "max_option_volume",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": -1000000000000,
              "type": "number"
            }
          },
          {
            "description": "Ticker grain: call contracts. (minimum).",
            "in": "query",
            "name": "min_call_volume",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": -1000000000000,
              "type": "number"
            }
          },
          {
            "description": "Ticker grain: call contracts. (maximum).",
            "in": "query",
            "name": "max_call_volume",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": -1000000000000,
              "type": "number"
            }
          },
          {
            "description": "Ticker grain: put contracts. (minimum).",
            "in": "query",
            "name": "min_put_volume",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": -1000000000000,
              "type": "number"
            }
          },
          {
            "description": "Ticker grain: put contracts. (maximum).",
            "in": "query",
            "name": "max_put_volume",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": -1000000000000,
              "type": "number"
            }
          },
          {
            "description": "Ticker grain: put over call volume. (minimum).",
            "in": "query",
            "name": "min_put_call_volume_ratio",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": -1000000000000,
              "type": "number"
            }
          },
          {
            "description": "Ticker grain: put over call volume. (maximum).",
            "in": "query",
            "name": "max_put_call_volume_ratio",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": -1000000000000,
              "type": "number"
            }
          },
          {
            "description": "Ticker grain: put over call open interest. (minimum).",
            "in": "query",
            "name": "min_put_call_open_interest_ratio",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": -1000000000000,
              "type": "number"
            }
          },
          {
            "description": "Ticker grain: put over call open interest. (maximum).",
            "in": "query",
            "name": "max_put_call_open_interest_ratio",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": -1000000000000,
              "type": "number"
            }
          },
          {
            "description": "Ticker grain: premium traded in US dollars. (minimum).",
            "in": "query",
            "name": "min_total_premium",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": -1000000000000,
              "type": "number"
            }
          },
          {
            "description": "Ticker grain: premium traded in US dollars. (maximum).",
            "in": "query",
            "name": "max_total_premium",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": -1000000000000,
              "type": "number"
            }
          },
          {
            "description": "Ticker grain: net call premium in US dollars. (minimum).",
            "in": "query",
            "name": "min_net_call_premium",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": -1000000000000,
              "type": "number"
            }
          },
          {
            "description": "Ticker grain: net call premium in US dollars. (maximum).",
            "in": "query",
            "name": "max_net_call_premium",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": -1000000000000,
              "type": "number"
            }
          },
          {
            "description": "Ticker grain: net put premium in US dollars. (minimum).",
            "in": "query",
            "name": "min_net_put_premium",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": -1000000000000,
              "type": "number"
            }
          },
          {
            "description": "Ticker grain: net put premium in US dollars. (maximum).",
            "in": "query",
            "name": "max_net_put_premium",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": -1000000000000,
              "type": "number"
            }
          },
          {
            "description": "Ticker grain: sweep premium in US dollars. (maximum).",
            "in": "query",
            "name": "max_sweep_premium",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": -1000000000000,
              "type": "number"
            }
          },
          {
            "description": "Ticker grain: 30-day at-the-money implied volatility. (minimum).",
            "in": "query",
            "name": "min_iv30",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": -1000000000000,
              "type": "number"
            }
          },
          {
            "description": "Ticker grain: 30-day at-the-money implied volatility. (maximum).",
            "in": "query",
            "name": "max_iv30",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": -1000000000000,
              "type": "number"
            }
          },
          {
            "description": "Ticker grain: one-year implied volatility rank, 0 to 1. (minimum).",
            "in": "query",
            "name": "min_iv_rank",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": -1000000000000,
              "type": "number"
            }
          },
          {
            "description": "Ticker grain: one-year implied volatility rank, 0 to 1. (maximum).",
            "in": "query",
            "name": "max_iv_rank",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": -1000000000000,
              "type": "number"
            }
          },
          {
            "description": "Ticker grain: one-year implied volatility percentile, 0 to 1. (minimum).",
            "in": "query",
            "name": "min_iv_percentile",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": -1000000000000,
              "type": "number"
            }
          },
          {
            "description": "Ticker grain: one-year implied volatility percentile, 0 to 1. (maximum).",
            "in": "query",
            "name": "max_iv_percentile",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": -1000000000000,
              "type": "number"
            }
          },
          {
            "description": "Ticker grain: change of the 30-day volatility versus the previous close. (minimum).",
            "in": "query",
            "name": "min_iv30_change",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": -1000000000000,
              "type": "number"
            }
          },
          {
            "description": "Ticker grain: change of the 30-day volatility versus the previous close. (maximum).",
            "in": "query",
            "name": "max_iv30_change",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": -1000000000000,
              "type": "number"
            }
          },
          {
            "description": "Ticker grain: 20-day realized volatility. (minimum).",
            "in": "query",
            "name": "min_realized_volatility_20d",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": -1000000000000,
              "type": "number"
            }
          },
          {
            "description": "Ticker grain: 20-day realized volatility. (maximum).",
            "in": "query",
            "name": "max_realized_volatility_20d",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": -1000000000000,
              "type": "number"
            }
          },
          {
            "description": "Ticker grain: 30-day implied minus 20-day realized volatility. (minimum).",
            "in": "query",
            "name": "min_volatility_risk_premium",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": -1000000000000,
              "type": "number"
            }
          },
          {
            "description": "Ticker grain: 30-day implied minus 20-day realized volatility. (maximum).",
            "in": "query",
            "name": "max_volatility_risk_premium",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": -1000000000000,
              "type": "number"
            }
          },
          {
            "description": "Ticker grain: 7-day minus 30-day implied volatility. (minimum).",
            "in": "query",
            "name": "min_term_slope_7_30",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": -1000000000000,
              "type": "number"
            }
          },
          {
            "description": "Ticker grain: 7-day minus 30-day implied volatility. (maximum).",
            "in": "query",
            "name": "max_term_slope_7_30",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": -1000000000000,
              "type": "number"
            }
          },
          {
            "description": "Ticker grain: 25-delta risk reversal at 30 days. (minimum).",
            "in": "query",
            "name": "min_risk_reversal_25d_30d",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": -1000000000000,
              "type": "number"
            }
          },
          {
            "description": "Ticker grain: 25-delta risk reversal at 30 days. (maximum).",
            "in": "query",
            "name": "max_risk_reversal_25d_30d",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": -1000000000000,
              "type": "number"
            }
          },
          {
            "description": "Ticker grain: net modeled dealer gamma exposure. (minimum).",
            "in": "query",
            "name": "min_net_gamma_exposure",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": -1000000000000,
              "type": "number"
            }
          },
          {
            "description": "Ticker grain: net modeled dealer gamma exposure. (maximum).",
            "in": "query",
            "name": "max_net_gamma_exposure",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": -1000000000000,
              "type": "number"
            }
          },
          {
            "description": "Ticker grain: distance from the underlying price to the gamma flip, percent. (minimum).",
            "in": "query",
            "name": "min_gamma_flip_distance_percent",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": -1000000000000,
              "type": "number"
            }
          },
          {
            "description": "Ticker grain: distance from the underlying price to the gamma flip, percent. (maximum).",
            "in": "query",
            "name": "max_gamma_flip_distance_percent",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": -1000000000000,
              "type": "number"
            }
          },
          {
            "description": "Ticker grain: distance to the call wall, percent. (minimum).",
            "in": "query",
            "name": "min_call_wall_distance_percent",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": -1000000000000,
              "type": "number"
            }
          },
          {
            "description": "Ticker grain: distance to the call wall, percent. (maximum).",
            "in": "query",
            "name": "max_call_wall_distance_percent",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": -1000000000000,
              "type": "number"
            }
          },
          {
            "description": "Ticker grain: distance to the put wall, percent. (minimum).",
            "in": "query",
            "name": "min_put_wall_distance_percent",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": -1000000000000,
              "type": "number"
            }
          },
          {
            "description": "Ticker grain: distance to the put wall, percent. (maximum).",
            "in": "query",
            "name": "max_put_wall_distance_percent",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": -1000000000000,
              "type": "number"
            }
          },
          {
            "description": "Ticker grain: positive call gamma over the absolute negative put gamma. (minimum).",
            "in": "query",
            "name": "min_gamma_tilt",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": -1000000000000,
              "type": "number"
            }
          },
          {
            "description": "Ticker grain: positive call gamma over the absolute negative put gamma. (maximum).",
            "in": "query",
            "name": "max_gamma_tilt",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": -1000000000000,
              "type": "number"
            }
          },
          {
            "description": "Ticker grain: share of gamma in the nearest expiration. (minimum).",
            "in": "query",
            "name": "min_next_expiration_share",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": -1000000000000,
              "type": "number"
            }
          },
          {
            "description": "Ticker grain: share of gamma in the nearest expiration. (maximum).",
            "in": "query",
            "name": "max_next_expiration_share",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": -1000000000000,
              "type": "number"
            }
          },
          {
            "description": "Ticker grain: distance to max pain, percent. (minimum).",
            "in": "query",
            "name": "min_max_pain_distance_percent",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": -1000000000000,
              "type": "number"
            }
          },
          {
            "description": "Ticker grain: distance to max pain, percent. (maximum).",
            "in": "query",
            "name": "max_max_pain_distance_percent",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": -1000000000000,
              "type": "number"
            }
          },
          {
            "description": "Ticker grain: one-day expected move, percent. (minimum).",
            "in": "query",
            "name": "min_expected_move_1d_percent",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": -1000000000000,
              "type": "number"
            }
          },
          {
            "description": "Ticker grain: one-day expected move, percent. (maximum).",
            "in": "query",
            "name": "max_expected_move_1d_percent",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": -1000000000000,
              "type": "number"
            }
          },
          {
            "description": "Maximum rows to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 100,
              "maximum": 500,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Opaque cursor returned as pagination.next_cursor_id; resumes the same query on the next page.",
            "in": "query",
            "name": "cursor_id",
            "required": false,
            "schema": {
              "maxLength": 1024,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "ask_percent": 58.1,
                      "contract_type": "call",
                      "date_of_expiry": "2026-10-16",
                      "days_to_expiry": 0,
                      "delta": 0.31,
                      "flags": [
                        "unusual"
                      ],
                      "implied_volatility": 0.138,
                      "net_premium": 1900000,
                      "open_interest": 4120,
                      "otm_percent": 0.479,
                      "premium": 8400000,
                      "strike": 6050,
                      "underlying_price": 6021.4,
                      "underlying_symbol": "SPXW",
                      "volume": 18200,
                      "volume_to_open_interest": 4.42
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "opra"
                  },
                  "pagination": {
                    "count": 1,
                    "has_more": false,
                    "limit": 100,
                    "next_cursor_id": null,
                    "next_url": null
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/OptionsScreenerRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "required": [
                    "data",
                    "meta",
                    "pagination"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Screen contracts or underlyings by flow, open interest, volatility and modeled exposure.",
        "tags": [
          "options"
        ],
        "x-dataset": "options",
        "x-history-params": [
          "date"
        ],
        "x-overnight": true,
        "x-paginated": true
      }
    },
    "/v1/options/sessions": {
      "get": {
        "description": "The session calendar of an underlying: the market state now, the overnight, regular and curb sessions of the current trading date with their state and times, the last completed session, the newest recorded sessions with the state of their quote and trade history (how many trades, how many gaps), and the exchange holidays and early closes. Use it to find which dates the history routes can serve before asking for them. date selects the trading date the listing starts from; session=gth lists overnight sessions and requires the overnight entitlement.",
        "operationId": "optionsSessions",
        "parameters": [
          {
            "description": "Underlying: an option root (SPXW, QQQ ...) or an index family (SPX covers SPX and SPXW).",
            "in": "query",
            "name": "underlying_symbol",
            "required": false,
            "schema": {
              "default": "SPX",
              "maxLength": 8,
              "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
              "type": "string"
            }
          },
          {
            "description": "Trading date the listing starts from, YYYY-MM-DD; the default is the current or latest session.",
            "in": "query",
            "name": "date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Session whose history to list: rth (regular) or gth (overnight, which requires the overnight entitlement).",
            "in": "query",
            "name": "session",
            "required": false,
            "schema": {
              "default": "rth",
              "enum": [
                "rth",
                "gth"
              ],
              "type": "string"
            }
          },
          {
            "description": "Number of recorded sessions to list, newest first.",
            "in": "query",
            "name": "count",
            "required": false,
            "schema": {
              "default": 10,
              "maximum": 20,
              "minimum": 1,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "underlying_symbol": "SPX",
                    "market_state": "open",
                    "trading_date": "2026-10-16",
                    "sessions": [
                      {
                        "session": "gth",
                        "state": "completed",
                        "start_timestamp": 1792124100000,
                        "end_timestamp": 1792146300000
                      },
                      {
                        "session": "rth",
                        "state": "live",
                        "start_timestamp": 1792157400000,
                        "end_timestamp": 1792181700000
                      },
                      {
                        "session": "curb",
                        "state": "upcoming",
                        "start_timestamp": 1792181700000,
                        "end_timestamp": 1792184400000
                      }
                    ],
                    "last_completed": {
                      "trading_date": "2026-10-15",
                      "session": "rth"
                    },
                    "history": [
                      {
                        "trading_date": "2026-10-15",
                        "session": "rth",
                        "start_timestamp": 1792071000000,
                        "end_timestamp": 1792095300000,
                        "available_on_request": true,
                        "quote_history_state": "ready",
                        "trade_history_state": "complete",
                        "trade_count": 412873,
                        "gaps": 0
                      }
                    ],
                    "holidays": [
                      {
                        "date": "2026-11-26",
                        "type": "full_close"
                      },
                      {
                        "date": "2026-11-27",
                        "type": "early_close"
                      }
                    ]
                  },
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "opra"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/OptionsSessionsRow"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Trading sessions of an underlying and the history recorded for them.",
        "tags": [
          "options"
        ],
        "x-dataset": "options",
        "x-history-params": [
          "date"
        ],
        "x-overnight": true
      }
    },
    "/v1/options/strikes": {
      "get": {
        "description": "The strikes listed for an expiration of an underlying, ascending. For an index family such as SPX the strikes of every root that lists the expiration are returned, each row naming its root. An expiration that is not listed returns data_unavailable.",
        "operationId": "optionsStrikes",
        "parameters": [
          {
            "description": "Underlying: an option root (SPXW, QQQ ...) or an index family (SPX covers SPX and SPXW).",
            "in": "query",
            "name": "underlying_symbol",
            "required": true,
            "schema": {
              "maxLength": 8,
              "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
              "type": "string"
            }
          },
          {
            "description": "Expiration date, YYYY-MM-DD.",
            "in": "query",
            "name": "date_of_expiry",
            "required": true,
            "schema": {
              "format": "date",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "underlying_symbol": "SPXW",
                      "date_of_expiry": "2026-10-16",
                      "strike": 5800
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "opra"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/OptionsStrikesRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Listed strikes of one expiration.",
        "tags": [
          "options"
        ],
        "x-dataset": "options"
      }
    },
    "/v1/options/trades": {
      "get": {
        "description": "Every option print, one row per execution, classified against the quote in force: aggressor side (above_ask, at_ask, near_ask, mid, near_bid, at_bid, below_bid or unknown), sentiment, the underlying price, implied volatility and delta at execution, open interest, the day's volume and the print's exchange and trade condition. Cancelled prints are not served. Give underlying_symbol or up to ten underlying_symbols. Filters on exchange and on the at/near split of a side are applied to each page after it is read, within a bounded scan; meta.coverage.scan_complete is false when the budget ended before the page filled. Rows are newest first; next_cursor_id pages back through the session and stays valid across restarts for 24 hours. Only prints retained by the platform can be served: roughly the last five sessions, and overnight prints only for the most recent session. Requesting an older session starts a load and answers 503 data_pending with retry_after_ms. A print cancelled after it was served is not recalled, and prints backfilled behind a cursor's position can be missed by a walk in progress; re-read the session for a complete view. Captured options flow is scoped to one trading date and the selected session. By default, this route provides the current session, or the last completed session while the market is closed. Totals restart for each new session. Explicit dates can read retained regular-session history (normally five sessions); overnight flow is limited to the most recent session. Session hours follow the underlying's calendar in /v1/options/sessions. Coverage may be partial.",
        "operationId": "optionsTrades",
        "parameters": [
          {
            "description": "Option root or family: SPX returns the SPX and SPXW roots, SPXW only the weekly root, QQQ, NDXP, RUTW, XSP ... Give this or underlying_symbols.",
            "in": "query",
            "name": "underlying_symbol",
            "required": false,
            "schema": {
              "maxLength": 8,
              "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
              "type": "string"
            }
          },
          {
            "description": "Several underlyings in one request, comma separated, at most 10 (for example SPX,SPY,QQQ). Use either underlying_symbol or underlying_symbols.",
            "explode": false,
            "in": "query",
            "name": "underlying_symbols",
            "required": false,
            "schema": {
              "items": {
                "maxLength": 128,
                "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
                "type": "string"
              },
              "maxItems": 10,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Trading date (YYYY-MM-DD). Default: the current session, else the most recent completed one. Overnight prints belong to the next trading date.",
            "in": "query",
            "name": "date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Trading session: rth is the regular session, gth the overnight (global trading hours) session before the trading date, all both. Overnight data requires the Pro plan and exists only for underlyings with an overnight session; GET /v1/options/sessions shows which.",
            "in": "query",
            "name": "session",
            "required": false,
            "schema": {
              "default": "rth",
              "enum": [
                "rth",
                "gth",
                "all"
              ],
              "type": "string"
            }
          },
          {
            "description": "Start of the window (inclusive). The window must lie within one trading session; combine with date to name that session.",
            "in": "query",
            "name": "start_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "End of the window (exclusive).",
            "in": "query",
            "name": "end_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "Calls or puts. Omit for both.",
            "in": "query",
            "name": "contract_type",
            "required": false,
            "schema": {
              "enum": [
                "call",
                "put"
              ],
              "type": "string"
            }
          },
          {
            "description": "Only contracts expiring on this date.",
            "in": "query",
            "name": "date_of_expiry",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Minimum days to expiration (0 = expires on the trading date).",
            "in": "query",
            "name": "min_dte",
            "required": false,
            "schema": {
              "maximum": 3650,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Maximum days to expiration.",
            "in": "query",
            "name": "max_dte",
            "required": false,
            "schema": {
              "maximum": 3650,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Minimum premium in US dollars of a print (price x size x multiplier).",
            "in": "query",
            "name": "min_premium",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": 0,
              "type": "number"
            }
          },
          {
            "description": "Maximum premium in US dollars of a print.",
            "in": "query",
            "name": "max_premium",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": 0,
              "type": "number"
            }
          },
          {
            "description": "Minimum print size in contracts.",
            "in": "query",
            "name": "min_size",
            "required": false,
            "schema": {
              "maximum": 1000000000,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Maximum print size in contracts.",
            "in": "query",
            "name": "max_size",
            "required": false,
            "schema": {
              "maximum": 1000000000,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Comma-separated order types: sweep, block, split, single, golden, multileg, cross, floor, auction, iso. A print matches when any listed type applies. Sweeps and splits are inferred groupings, not exchange-confirmed.",
            "explode": false,
            "in": "query",
            "name": "trade_type",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "sweep",
                  "block",
                  "split",
                  "single",
                  "golden",
                  "multileg",
                  "cross",
                  "floor",
                  "auction",
                  "iso"
                ],
                "type": "string"
              },
              "maxItems": 10,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Comma-separated aggressor classes: above_ask, at_ask, near_ask, mid, near_bid, at_bid, below_bid, unknown. ask selects at_ask and near_ask, bid selects near_bid and at_bid. at_ask without near_ask (and at_bid without near_bid) can be asked for only on /v1/options/trades and /v1/options/flow/overnight; elsewhere use ask and bid.",
            "explode": false,
            "in": "query",
            "name": "side",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "above_ask",
                  "at_ask",
                  "near_ask",
                  "ask",
                  "mid",
                  "near_bid",
                  "at_bid",
                  "bid",
                  "below_bid",
                  "unknown"
                ],
                "type": "string"
              },
              "maxItems": 10,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Comma-separated sentiments: bullish (calls bought or puts sold), bearish (puts bought or calls sold), neutral (traded at the mid) and unknown (direction not determinable).",
            "explode": false,
            "in": "query",
            "name": "sentiment",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "bullish",
                  "bearish",
                  "neutral",
                  "unknown"
                ],
                "type": "string"
              },
              "maxItems": 4,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Only out-of-the-money contracts (strike beyond the underlying price). Prints without a known underlying price are excluded.",
            "in": "query",
            "name": "otm_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Include multi-leg (complex order) prints. Default true.",
            "in": "query",
            "name": "include_complex",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Only unusual activity: volume above open interest within 45 days, premium of at least $250,000, or an out-of-the-money sweep at the ask.",
            "in": "query",
            "name": "unusual_only",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Lowest strike in dollars.",
            "in": "query",
            "name": "min_strike",
            "required": false,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 1000000,
              "type": "number"
            }
          },
          {
            "description": "Highest strike in dollars.",
            "in": "query",
            "name": "max_strike",
            "required": false,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 1000000,
              "type": "number"
            }
          },
          {
            "description": "Comma-separated exchanges the print executed on: nom, amex, cboe, ise, arca, phlx, box, mrcy, gmni, c2, miax, emld, bx, bzx, edgx, perl, memx.",
            "explode": false,
            "in": "query",
            "name": "exchange",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "nom",
                  "amex",
                  "cboe",
                  "ise",
                  "arca",
                  "phlx",
                  "box",
                  "mrcy",
                  "gmni",
                  "c2",
                  "miax",
                  "emld",
                  "bx",
                  "bzx",
                  "edgx",
                  "perl",
                  "memx"
                ],
                "type": "string"
              },
              "maxItems": 17,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Maximum rows to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 100,
              "maximum": 500,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Opaque cursor returned as pagination.next_cursor_id; resumes the same query on the next page.",
            "in": "query",
            "name": "cursor_id",
            "required": false,
            "schema": {
              "maxLength": 1024,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "ask": 3.4,
                      "bid": 3.3,
                      "condition_code": 18,
                      "contract_type": "call",
                      "date_of_expiry": "2026-10-16",
                      "day_volume": 1810,
                      "days_to_expiry": 0,
                      "delta": 0.31,
                      "exchange": "cboe",
                      "exchange_code": 5,
                      "flags": [],
                      "group_id": null,
                      "id": "SPXW:20261016:6050000:C:20261016:48213",
                      "implied_volatility": 0.142,
                      "is_block": true,
                      "is_golden": false,
                      "is_unusual": false,
                      "open_interest": 4120,
                      "otm_percent": 0.4787,
                      "premium": 85000,
                      "price": 3.4,
                      "sentiment": "bullish",
                      "session": "rth",
                      "side": "at_ask",
                      "side_confidence": 0.9,
                      "size": 250,
                      "strike": 6050,
                      "timestamp": 1792161012345,
                      "trade_type": "single",
                      "underlying_price": 6021.4,
                      "underlying_symbol": "SPXW"
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "opra"
                  },
                  "pagination": {
                    "count": 1,
                    "has_more": false,
                    "limit": 100,
                    "next_cursor_id": null,
                    "next_url": null
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/OptionsTradesRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "required": [
                    "data",
                    "meta",
                    "pagination"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Unconsolidated option prints with aggressor side, sentiment and context.",
        "tags": [
          "options"
        ],
        "x-dataset": "options",
        "x-history-params": [
          "date",
          "start_time",
          "end_time"
        ],
        "x-mcp": true,
        "x-overnight": true,
        "x-paginated": true,
        "x-stored-session-notice": "Captured options flow is scoped to one trading date and the selected session. By default, this route provides the current session, or the last completed session while the market is closed. Totals restart for each new session. Explicit dates can read retained regular-session history (normally five sessions); overnight flow is limited to the most recent session. Session hours follow the underlying's calendar in /v1/options/sessions. Coverage may be partial."
      }
    },
    "/v1/options/underlyings": {
      "get": {
        "description": "Every underlying symbol that has listed options, alphabetically, paginated with cursor_id. search narrows the list to symbols that start with the text (SPX returns SPX, SPXL, SPXW ...). Use a symbol as underlying_symbol on the other options routes; index options trade under their own roots such as SPX and SPXW.",
        "operationId": "optionsUnderlyings",
        "parameters": [
          {
            "description": "Return only symbols starting with this text, case-insensitive.",
            "in": "query",
            "name": "search",
            "required": false,
            "schema": {
              "maxLength": 8,
              "pattern": "^[A-Za-z0-9.]{1,8}$",
              "type": "string"
            }
          },
          {
            "description": "Maximum rows to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 1000,
              "maximum": 5000,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Opaque cursor returned as pagination.next_cursor_id; resumes the same query on the next page.",
            "in": "query",
            "name": "cursor_id",
            "required": false,
            "schema": {
              "maxLength": 1024,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "underlying_symbol": "SPXW"
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "opra"
                  },
                  "pagination": {
                    "count": 1,
                    "has_more": false,
                    "limit": 1000,
                    "next_cursor_id": null,
                    "next_url": null
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/OptionsUnderlyingsRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "required": [
                    "data",
                    "meta",
                    "pagination"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Underlyings that have listed options.",
        "tags": [
          "options"
        ],
        "x-dataset": "options",
        "x-paginated": true
      }
    },
    "/v1/options/volatility/drift": {
      "get": {
        "description": "The at-the-money implied volatility of one expiration through the session on two clocks (calendar time and trading-variance time) next to the adjusted realized volatility of the underlying and the 30-day constant-maturity volatility. Volatilities are decimals; a value is null where it could not be determined. Sessions older than the retained timelines are not available.",
        "operationId": "optionsVolatilityDrift",
        "parameters": [
          {
            "description": "Option root or family: SPX covers the SPX and SPXW roots, SPXW only the weekly root, QQQ, NDXP, RUTW, XSP ...",
            "in": "query",
            "name": "underlying_symbol",
            "required": true,
            "schema": {
              "maxLength": 8,
              "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
              "type": "string"
            }
          },
          {
            "description": "Trading date (YYYY-MM-DD). Default: the current session, else the most recent completed one.",
            "in": "query",
            "name": "date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Trading session: rth is the regular session, gth the overnight (global trading hours) session before the trading date. Overnight data requires the Pro plan and exists only for underlyings with an overnight session; GET /v1/options/sessions shows which.",
            "in": "query",
            "name": "session",
            "required": false,
            "schema": {
              "default": "rth",
              "enum": [
                "rth",
                "gth"
              ],
              "type": "string"
            }
          },
          {
            "description": "The expiration whose volatility is tracked. Default: the nearest.",
            "in": "query",
            "name": "date_of_expiry",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Bucket length: 1m or 5m.",
            "in": "query",
            "name": "interval",
            "required": false,
            "schema": {
              "default": "1m",
              "enum": [
                "1m",
                "5m"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "date_of_expiry": "2026-10-16",
                    "interval": "1m",
                    "points": [
                      {
                        "adjusted_realized_volatility": 0.118,
                        "implied_volatility": 0.142,
                        "implied_volatility_30d": 0.171,
                        "implied_volatility_trading_clock": 0.139,
                        "timestamp": 1792161000000,
                        "underlying_price": 6021.4
                      }
                    ],
                    "realized_volatility_basis": {
                      "days": 20,
                      "default_used": false,
                      "regular_session_share": 0.8
                    },
                    "session": "rth",
                    "trading_date": "2026-10-16",
                    "underlying_symbol": "SPX"
                  },
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "opra"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/OptionsVolatilityDriftRow"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Intraday implied volatility against adjusted realized volatility.",
        "tags": [
          "options"
        ],
        "x-dataset": "options",
        "x-history-params": [
          "date"
        ],
        "x-mcp": true,
        "x-overnight": true,
        "x-streamable": true
      }
    },
    "/v1/options/volatility/expected-move": {
      "get": {
        "description": "For each listed expiration, the move the options market implies for the underlying by that expiration at one standard deviation (price x at-the-money implied volatility x the square root of the time to expiry), in points and percent, with the resulting lower and upper bound around the current price. It is a statistic of option prices, not a forecast; roughly two thirds of outcomes fall inside the bounds if the volatility is right.",
        "operationId": "optionsVolatilityExpectedMove",
        "parameters": [
          {
            "description": "Option root or family: SPX covers the SPX and SPXW roots, SPXW only the weekly root, QQQ, NDXP, RUTW, XSP ...",
            "in": "query",
            "name": "underlying_symbol",
            "required": true,
            "schema": {
              "maxLength": 8,
              "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
              "type": "string"
            }
          },
          {
            "description": "Trading date (YYYY-MM-DD). Default: the current session, else the most recent completed one.",
            "in": "query",
            "name": "date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Trading session: rth is the regular session, gth the overnight (global trading hours) session before the trading date. Overnight data requires the Pro plan and exists only for underlyings with an overnight session; GET /v1/options/sessions shows which.",
            "in": "query",
            "name": "session",
            "required": false,
            "schema": {
              "default": "rth",
              "enum": [
                "rth",
                "gth"
              ],
              "type": "string"
            }
          },
          {
            "description": "Minimum days to expiration (0 = expires on the trading date).",
            "in": "query",
            "name": "min_dte",
            "required": false,
            "schema": {
              "maximum": 3650,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Maximum days to expiration.",
            "in": "query",
            "name": "max_dte",
            "required": false,
            "schema": {
              "maximum": 3650,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Number of expirations to return, soonest first.",
            "in": "query",
            "name": "max_expirations",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "atm_implied_volatility": 0.142,
                      "date_of_expiry": "2026-10-16",
                      "days_to_expiry": 0,
                      "expected_move": 24.6,
                      "expected_move_percent": 0.4085,
                      "forward": 6021.5,
                      "lower_bound": 5996.8,
                      "settlement": "pm",
                      "underlying_price": 6021.4,
                      "underlying_symbol": "SPXW",
                      "upper_bound": 6046
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "opra"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/OptionsVolatilityExpectedMoveRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "One-standard-deviation expected move to each expiration from at-the-money implied volatility.",
        "tags": [
          "options"
        ],
        "x-dataset": "options",
        "x-history-params": [
          "date"
        ],
        "x-overnight": true
      }
    },
    "/v1/options/volatility/history": {
      "get": {
        "description": "One row per trading date with the constant-maturity implied volatility (7, 14, 30, 60, 90, 180 or 365 days; 30 by default) and the underlying close, from the platform's own daily record. Dates it holds no value for are omitted. For rank and percentile use /v1/options/volatility/rank. The default window is the longest your plan allows, up to 365 days.",
        "operationId": "optionsVolatilityHistory",
        "parameters": [
          {
            "description": "Option root or family: SPX covers the SPX and SPXW roots, SPXW only the weekly root, QQQ, NDXP, RUTW, XSP ...",
            "in": "query",
            "name": "underlying_symbol",
            "required": true,
            "schema": {
              "maxLength": 8,
              "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
              "type": "string"
            }
          },
          {
            "description": "Constant maturity of the volatility, in days: 7, 14, 30, 60, 90, 180 or 365.",
            "in": "query",
            "name": "maturity",
            "required": false,
            "schema": {
              "default": "30",
              "enum": [
                "7",
                "14",
                "30",
                "60",
                "90",
                "180",
                "365"
              ],
              "type": "string"
            }
          },
          {
            "description": "Start of the series. Default: the start of your plan's history window (up to 365 days).",
            "in": "query",
            "name": "start_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "End of the series. Default: now.",
            "in": "query",
            "name": "end_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "date": "2026-10-15",
                      "implied_volatility": 0.169,
                      "underlying_price": 6004.8
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "opra"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/OptionsVolatilityHistoryRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Daily history of a constant-maturity implied volatility.",
        "tags": [
          "options"
        ],
        "x-dataset": "options",
        "x-history-params": [
          "start_time",
          "end_time"
        ]
      }
    },
    "/v1/options/volatility/rank": {
      "get": {
        "description": "Where the current constant-maturity implied volatility stands in its range over the lookback: the rank ((current - minimum) / (maximum - minimum)) and the percentile (the share of days with a lower volatility), with the daily series they are computed from. The history is the platform's own daily record; coverage_ratio is the share of lookback days it holds, and history_status reports a series that is still loading. The default window is the longest your plan allows, up to 365 days.",
        "operationId": "optionsVolatilityRank",
        "parameters": [
          {
            "description": "Option root or family: SPX covers the SPX and SPXW roots, SPXW only the weekly root, QQQ, NDXP, RUTW, XSP ...",
            "in": "query",
            "name": "underlying_symbol",
            "required": true,
            "schema": {
              "maxLength": 8,
              "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
              "type": "string"
            }
          },
          {
            "description": "Constant maturity of the volatility, in days: 7, 14, 30, 60, 90, 180 or 365.",
            "in": "query",
            "name": "maturity",
            "required": false,
            "schema": {
              "default": "30",
              "enum": [
                "7",
                "14",
                "30",
                "60",
                "90",
                "180",
                "365"
              ],
              "type": "string"
            }
          },
          {
            "description": "Days the rank is measured over; never more than your plan's history window (a longer request is shortened, with a warning).",
            "in": "query",
            "name": "lookback",
            "required": false,
            "schema": {
              "default": 365,
              "maximum": 365,
              "minimum": 20,
              "type": "integer"
            }
          },
          {
            "description": "Start of the returned series. Default: the start of your plan's history window (up to 365 days).",
            "in": "query",
            "name": "start_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "Evaluation time. Default: now.",
            "in": "query",
            "name": "end_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "current": {
                      "coverage_ratio": 1,
                      "date": "2026-10-16",
                      "implied_volatility": 0.171,
                      "percentile": 0.41,
                      "rank": 0.28,
                      "window_maximum": 0.452,
                      "window_minimum": 0.109
                    },
                    "history": [
                      {
                        "date": "2026-10-15",
                        "implied_volatility": 0.169,
                        "percentile": 0.4,
                        "rank": 0.27,
                        "underlying_price": 6004.8
                      }
                    ],
                    "history_status": {
                      "from": null,
                      "progress": 1,
                      "state": "ready",
                      "to": null
                    },
                    "lookback_days": 365,
                    "maturity_days": 30,
                    "underlying_symbol": "SPX"
                  },
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "opra"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/OptionsVolatilityRankRow"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Implied volatility rank and percentile of a constant-maturity volatility.",
        "tags": [
          "options"
        ],
        "x-dataset": "options",
        "x-history-params": [
          "start_time",
          "end_time"
        ],
        "x-mcp": true
      }
    },
    "/v1/options/volatility/skew": {
      "get": {
        "description": "For each expiration, the implied volatility of calls, puts and the out-of-the-money option at every strike, with the delta, the at-the-money volatility and the forward, plus the 25-delta and 10-delta risk reversal (call minus put volatility) and butterfly, the normalized skew and the slope. Volatilities are decimals (0.18 is 18%) solved from the option chain by the platform, not quoted by an exchange. The default is the nearest four expirations with at least an hour to run.",
        "operationId": "optionsVolatilitySkew",
        "parameters": [
          {
            "description": "Option root or family: SPX covers the SPX and SPXW roots, SPXW only the weekly root, QQQ, NDXP, RUTW, XSP ...",
            "in": "query",
            "name": "underlying_symbol",
            "required": true,
            "schema": {
              "maxLength": 8,
              "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
              "type": "string"
            }
          },
          {
            "description": "Trading date (YYYY-MM-DD). Default: the current session, else the most recent completed one.",
            "in": "query",
            "name": "date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Trading session: rth is the regular session, gth the overnight (global trading hours) session before the trading date. Overnight data requires the Pro plan and exists only for underlyings with an overnight session; GET /v1/options/sessions shows which.",
            "in": "query",
            "name": "session",
            "required": false,
            "schema": {
              "default": "rth",
              "enum": [
                "rth",
                "gth"
              ],
              "type": "string"
            }
          },
          {
            "description": "The expiration to show. Default: the nearest four.",
            "in": "query",
            "name": "date_of_expiry",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Expirations to show, comma separated (YYYY-MM-DD), at most 8.",
            "explode": false,
            "in": "query",
            "name": "expirations",
            "required": false,
            "schema": {
              "items": {
                "maxLength": 128,
                "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$",
                "type": "string"
              },
              "maxItems": 8,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "expirations": [
                      {
                        "atm_implied_volatility": 0.152,
                        "butterfly_10d": 0.021,
                        "butterfly_25d": 0.009,
                        "date_of_expiry": "2026-10-23",
                        "days_to_expiry": 7,
                        "forward": 6026.3,
                        "normalized_skew": -0.204,
                        "points": [
                          {
                            "call_delta": 0.55,
                            "call_implied_volatility": 0.154,
                            "moneyness": -0.0044,
                            "otm_implied_volatility": 0.155,
                            "put_delta": -0.45,
                            "put_implied_volatility": 0.155,
                            "strike": 6000
                          }
                        ],
                        "risk_reversal_10d": -0.058,
                        "risk_reversal_25d": -0.031,
                        "slope": -1.6
                      }
                    ],
                    "roots": [
                      "SPX",
                      "SPXW"
                    ],
                    "session": "rth",
                    "trading_date": "2026-10-16",
                    "underlying_symbol": "SPX",
                    "valuation": {
                      "chain_timestamp": 1792160995000,
                      "open_interest_date": "2026-10-15",
                      "risk_free_rate": 0.0412,
                      "timestamp": 1792161000000,
                      "underlying_price": 6021.4,
                      "underlying_stale": false,
                      "underlying_timestamp": 1792160999000
                    }
                  },
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "opra"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/OptionsVolatilitySkewRow"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Implied volatility smile by strike and delta, with risk reversals and butterflies.",
        "tags": [
          "options"
        ],
        "x-dataset": "options",
        "x-history-params": [
          "date"
        ],
        "x-mcp": true,
        "x-overnight": true,
        "x-streamable": true
      }
    },
    "/v1/options/volatility/surface": {
      "get": {
        "description": "The implied volatility of every strike and expiration in the window as a list of cells. By default each strike shows its out-of-the-money option (puts below the underlying price, calls at and above it), the usual basis for a surface; contract_type selects calls or puts only. The window is 60 strikes either side of the underlying price and 24 expirations unless set. Volatilities are decimals solved by the platform. Cells without a listed contract are omitted.",
        "operationId": "optionsVolatilitySurface",
        "parameters": [
          {
            "description": "Option root or family: SPX covers the SPX and SPXW roots, SPXW only the weekly root, QQQ, NDXP, RUTW, XSP ...",
            "in": "query",
            "name": "underlying_symbol",
            "required": true,
            "schema": {
              "maxLength": 8,
              "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
              "type": "string"
            }
          },
          {
            "description": "Trading date (YYYY-MM-DD). Default: the current session, else the most recent completed one.",
            "in": "query",
            "name": "date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Trading session: rth is the regular session, gth the overnight (global trading hours) session before the trading date. Overnight data requires the Pro plan and exists only for underlyings with an overnight session; GET /v1/options/sessions shows which.",
            "in": "query",
            "name": "session",
            "required": false,
            "schema": {
              "default": "rth",
              "enum": [
                "rth",
                "gth"
              ],
              "type": "string"
            }
          },
          {
            "description": "Calls or puts. Omit for both.",
            "in": "query",
            "name": "contract_type",
            "required": false,
            "schema": {
              "enum": [
                "call",
                "put"
              ],
              "type": "string"
            }
          },
          {
            "description": "Only this expiration.",
            "in": "query",
            "name": "date_of_expiry",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Only these expirations, comma separated (YYYY-MM-DD), at most 64. Unlisted dates are ignored.",
            "explode": false,
            "in": "query",
            "name": "expirations",
            "required": false,
            "schema": {
              "items": {
                "maxLength": 128,
                "pattern": "^[0-9]{4}-[0-9]{2}-[0-9]{2}$",
                "type": "string"
              },
              "maxItems": 64,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Expiration set: 0dte, 1dte, weekly (within 7 days), monthly (third-Friday expirations), lte30 or lte90 (within 30 or 90 days).",
            "in": "query",
            "name": "expiry_mode",
            "required": false,
            "schema": {
              "enum": [
                "0dte",
                "1dte",
                "weekly",
                "monthly",
                "lte30",
                "lte90"
              ],
              "type": "string"
            }
          },
          {
            "description": "Minimum days to expiration (0 = expires on the trading date).",
            "in": "query",
            "name": "min_dte",
            "required": false,
            "schema": {
              "maximum": 3650,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Maximum days to expiration.",
            "in": "query",
            "name": "max_dte",
            "required": false,
            "schema": {
              "maximum": 3650,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Lowest strike in dollars.",
            "in": "query",
            "name": "min_strike",
            "required": false,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 1000000,
              "type": "number"
            }
          },
          {
            "description": "Highest strike in dollars.",
            "in": "query",
            "name": "max_strike",
            "required": false,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 1000000,
              "type": "number"
            }
          },
          {
            "description": "This many listed strikes either side of the strike nearest the underlying price (up to 200).",
            "in": "query",
            "name": "strikes_around",
            "required": false,
            "schema": {
              "default": 60,
              "maximum": 200,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Number of expirations (columns) in the grid.",
            "in": "query",
            "name": "max_expirations",
            "required": false,
            "schema": {
              "default": 24,
              "maximum": 64,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Index of the first expiration of the grid among the selected ones.",
            "in": "query",
            "name": "expiration_offset",
            "required": false,
            "schema": {
              "maximum": 400,
              "minimum": 0,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "basis": "out_of_the_money",
                    "cells": [
                      {
                        "contract_type": "put",
                        "date_of_expiry": "2026-10-23",
                        "days_to_expiry": 7,
                        "implied_volatility": 0.158,
                        "strike": 6000
                      }
                    ],
                    "roots": [
                      "SPX",
                      "SPXW"
                    ],
                    "session": "rth",
                    "trading_date": "2026-10-16",
                    "underlying_symbol": "SPX",
                    "valuation": {
                      "chain_timestamp": 1792160995000,
                      "open_interest_date": "2026-10-15",
                      "risk_free_rate": 0.0412,
                      "timestamp": 1792161000000,
                      "underlying_price": 6021.4,
                      "underlying_stale": false,
                      "underlying_timestamp": 1792160999000
                    }
                  },
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "opra"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/OptionsVolatilitySurfaceRow"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Implied volatility surface by strike and expiration.",
        "tags": [
          "options"
        ],
        "x-dataset": "options",
        "x-history-params": [
          "date"
        ],
        "x-overnight": true,
        "x-streamable": true
      }
    },
    "/v1/options/volatility/surface-slice": {
      "get": {
        "description": "A cut through the implied volatility surface: give strike for the term slice (that strike at every listed expiration), date_of_expiry for the smile slice (every strike of that expiration), or both for one point. Cells follow the basis rules of /v1/options/volatility/surface: out-of-the-money by default, contract_type for one leg.",
        "operationId": "optionsVolatilitySurfaceSlice",
        "parameters": [
          {
            "description": "Option root or family: SPX covers the SPX and SPXW roots, SPXW only the weekly root, QQQ, NDXP, RUTW, XSP ...",
            "in": "query",
            "name": "underlying_symbol",
            "required": true,
            "schema": {
              "maxLength": 8,
              "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
              "type": "string"
            }
          },
          {
            "description": "Trading date (YYYY-MM-DD). Default: the current session, else the most recent completed one.",
            "in": "query",
            "name": "date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Trading session: rth is the regular session, gth the overnight (global trading hours) session before the trading date. Overnight data requires the Pro plan and exists only for underlyings with an overnight session; GET /v1/options/sessions shows which.",
            "in": "query",
            "name": "session",
            "required": false,
            "schema": {
              "default": "rth",
              "enum": [
                "rth",
                "gth"
              ],
              "type": "string"
            }
          },
          {
            "description": "Show this strike across expirations (the term slice).",
            "in": "query",
            "name": "strike",
            "required": false,
            "schema": {
              "exclusiveMinimum": 0,
              "maximum": 1000000,
              "type": "number"
            }
          },
          {
            "description": "Show this expiration across strikes (the smile slice).",
            "in": "query",
            "name": "date_of_expiry",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Calls or puts. Omit for both.",
            "in": "query",
            "name": "contract_type",
            "required": false,
            "schema": {
              "enum": [
                "call",
                "put"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "basis": "out_of_the_money",
                    "cells": [
                      {
                        "contract_type": "put",
                        "date_of_expiry": "2026-10-23",
                        "days_to_expiry": 7,
                        "implied_volatility": 0.158,
                        "strike": 6000
                      }
                    ],
                    "roots": [
                      "SPX",
                      "SPXW"
                    ],
                    "session": "rth",
                    "trading_date": "2026-10-16",
                    "underlying_symbol": "SPX",
                    "valuation": {
                      "chain_timestamp": 1792160995000,
                      "open_interest_date": "2026-10-15",
                      "risk_free_rate": 0.0412,
                      "timestamp": 1792161000000,
                      "underlying_price": 6021.4,
                      "underlying_stale": false,
                      "underlying_timestamp": 1792160999000
                    }
                  },
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "opra"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/OptionsVolatilitySurfaceSliceRow"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "One strike across expirations, or one expiration across strikes, of the volatility surface.",
        "tags": [
          "options"
        ],
        "x-dataset": "options",
        "x-history-params": [
          "date"
        ],
        "x-overnight": true,
        "x-streamable": true
      }
    },
    "/v1/options/volatility/term-structure": {
      "get": {
        "description": "The implied volatility of each listed expiration with its forward and expected move, the volatility interpolated to 7, 14, 30, 60, 90, 180 and 365 days, the forward volatility between consecutive expirations (null when the interval is under a day or the variance is inverted) and the slopes between 7, 30 and 60 days. When an SPX third-Friday expiration has both an AM (SPX) and a PM (SPXW) root, only the later one is on_curve. Volatilities are decimals solved by the platform.",
        "operationId": "optionsVolatilityTermStructure",
        "parameters": [
          {
            "description": "Option root or family: SPX covers the SPX and SPXW roots, SPXW only the weekly root, QQQ, NDXP, RUTW, XSP ...",
            "in": "query",
            "name": "underlying_symbol",
            "required": true,
            "schema": {
              "maxLength": 8,
              "pattern": "^[A-Za-z][A-Za-z0-9.]{0,7}$",
              "type": "string"
            }
          },
          {
            "description": "Trading date (YYYY-MM-DD). Default: the current session, else the most recent completed one.",
            "in": "query",
            "name": "date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Trading session: rth is the regular session, gth the overnight (global trading hours) session before the trading date. Overnight data requires the Pro plan and exists only for underlyings with an overnight session; GET /v1/options/sessions shows which.",
            "in": "query",
            "name": "session",
            "required": false,
            "schema": {
              "default": "rth",
              "enum": [
                "rth",
                "gth"
              ],
              "type": "string"
            }
          },
          {
            "description": "atm: the at-the-money volatility; delta_band: the mean volatility of contracts with an absolute delta within min_abs_delta and max_abs_delta.",
            "in": "query",
            "name": "measure",
            "required": false,
            "schema": {
              "default": "atm",
              "enum": [
                "atm",
                "delta_band"
              ],
              "type": "string"
            }
          },
          {
            "description": "Delta band only: lower bound of the absolute delta.",
            "in": "query",
            "name": "min_abs_delta",
            "required": false,
            "schema": {
              "maximum": 1,
              "minimum": 0,
              "type": "number"
            }
          },
          {
            "description": "Delta band only: upper bound of the absolute delta.",
            "in": "query",
            "name": "max_abs_delta",
            "required": false,
            "schema": {
              "maximum": 1,
              "minimum": 0,
              "type": "number"
            }
          },
          {
            "description": "Calls or puts. Omit for both.",
            "in": "query",
            "name": "contract_type",
            "required": false,
            "schema": {
              "enum": [
                "call",
                "put"
              ],
              "type": "string"
            }
          },
          {
            "description": "Longest expiration, in days.",
            "in": "query",
            "name": "max_dte",
            "required": false,
            "schema": {
              "default": 400,
              "maximum": 1000,
              "minimum": 1,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "constant_maturity": [
                      {
                        "days": 7,
                        "implied_volatility": 0.152
                      },
                      {
                        "days": 365,
                        "implied_volatility": null
                      }
                    ],
                    "expirations": [
                      {
                        "date_of_expiry": "2026-10-23",
                        "days_to_expiry": 7,
                        "expected_move": 41.2,
                        "forward": 6026.3,
                        "forward_volatility": 0.158,
                        "implied_volatility": 0.152,
                        "on_curve": true,
                        "underlying_symbol": "SPXW"
                      }
                    ],
                    "measure": "atm",
                    "roots": [
                      "SPX",
                      "SPXW"
                    ],
                    "session": "rth",
                    "slope": {
                      "iv30_minus_iv7": 0.0054,
                      "iv60_over_iv30": 1.0246
                    },
                    "trading_date": "2026-10-16",
                    "underlying_symbol": "SPX",
                    "valuation": {
                      "chain_timestamp": 1792160995000,
                      "open_interest_date": "2026-10-15",
                      "risk_free_rate": 0.0412,
                      "timestamp": 1792161000000,
                      "underlying_price": 6021.4,
                      "underlying_stale": false,
                      "underlying_timestamp": 1792160999000
                    }
                  },
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "opra"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/OptionsVolatilityTermStructureRow"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "At-the-money implied volatility by expiration, constant-maturity points and forward volatilities.",
        "tags": [
          "options"
        ],
        "x-dataset": "options",
        "x-history-params": [
          "date"
        ],
        "x-mcp": true,
        "x-overnight": true,
        "x-streamable": true
      }
    },
    "/v1/status": {
      "get": {
        "description": "Overall status and the health of the data components (options, futures, stocks, indices). No authentication is required.",
        "operationId": "platformStatus",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "components": [
                      {
                        "name": "options",
                        "status": "operational"
                      }
                    ],
                    "server_time": 1760659200123,
                    "status": "operational"
                  },
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "derived"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/PlatformStatusRow"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response."
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "security": [],
        "summary": "Provider-neutral service health.",
        "tags": [
          "market"
        ],
        "x-dataset": "none"
      }
    },
    "/v1/stocks/bars": {
      "get": {
        "description": "Aggregate bars for one stock, oldest first, covering pre-market, regular and after-hours trading (04:00 to 20:00 ET). Bars align to the interval; bars with no trades are absent. Prices are split adjusted unless adjusted=false. Without start_time the window reaches back 3 days for second and minute intervals, 30 days for hourly and one year for daily and longer (never further than your plan's history); without end_time it ends now. Page forward with cursor_id.",
        "operationId": "stocksBars",
        "parameters": [
          {
            "description": "Ticker symbol, for example AAPL.",
            "in": "query",
            "name": "symbol",
            "required": true,
            "schema": {
              "maxLength": 11,
              "pattern": "^[A-Za-z]{1,6}(\\.[A-Za-z0-9]{1,4})?$",
              "type": "string"
            }
          },
          {
            "description": "Bar size: 1s 5s 10s 15s 30s 1m 2m 3m 5m 10m 15m 30m 1h 2h 4h 1d 1w 1mo.",
            "in": "query",
            "name": "interval",
            "required": false,
            "schema": {
              "default": "1d",
              "enum": [
                "1s",
                "5s",
                "10s",
                "15s",
                "30s",
                "1m",
                "2m",
                "3m",
                "5m",
                "10m",
                "15m",
                "30m",
                "1h",
                "2h",
                "4h",
                "1d",
                "1w",
                "1mo"
              ],
              "type": "string"
            }
          },
          {
            "description": "Adjust prices for splits (default true).",
            "in": "query",
            "name": "adjusted",
            "required": false,
            "schema": {
              "default": true,
              "type": "boolean"
            }
          },
          {
            "description": "Inclusive start of the window.",
            "in": "query",
            "name": "start_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "Exclusive end of the window.",
            "in": "query",
            "name": "end_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "Maximum rows to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 1000,
              "maximum": 5000,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Opaque cursor returned as pagination.next_cursor_id; resumes the same query on the next page.",
            "in": "query",
            "name": "cursor_id",
            "required": false,
            "schema": {
              "maxLength": 1024,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "close": 231.42,
                      "high": 231.5,
                      "low": 231.2,
                      "open": 231.3,
                      "start_time": 1760659140000,
                      "trades": 2110,
                      "volume": 120000,
                      "vwap": 231.38
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "sip"
                  },
                  "pagination": {
                    "count": 1,
                    "has_more": false,
                    "limit": 1000,
                    "next_cursor_id": null,
                    "next_url": null
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/StocksBarsRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "required": [
                    "data",
                    "meta",
                    "pagination"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "OHLCV bars from 1 second to 1 month.",
        "tags": [
          "stocks"
        ],
        "x-dataset": "equities",
        "x-history-params": [
          "start_time",
          "end_time"
        ],
        "x-mcp": true,
        "x-paginated": true
      }
    },
    "/v1/stocks/bars/grouped": {
      "get": {
        "description": "The whole market's daily open, high, low, close and volume for a date, in symbol order, paged with cursor_id. Dates that have closed are immutable and cached for hours. Weekends and holidays have no data.",
        "operationId": "stocksBarsGrouped",
        "parameters": [
          {
            "description": "Trading date, YYYY-MM-DD.",
            "in": "query",
            "name": "date",
            "required": true,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Adjust prices for splits (default true).",
            "in": "query",
            "name": "adjusted",
            "required": false,
            "schema": {
              "default": true,
              "type": "boolean"
            }
          },
          {
            "description": "Maximum rows to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 1000,
              "maximum": 5000,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Opaque cursor returned as pagination.next_cursor_id; resumes the same query on the next page.",
            "in": "query",
            "name": "cursor_id",
            "required": false,
            "schema": {
              "maxLength": 1024,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "close": 231.42,
                      "high": 232.3,
                      "low": 227.9,
                      "open": 228.1,
                      "symbol": "AAPL",
                      "trades": 512000,
                      "volume": 41230000,
                      "vwap": 230.4
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "sip"
                  },
                  "pagination": {
                    "count": 1,
                    "has_more": false,
                    "limit": 1000,
                    "next_cursor_id": null,
                    "next_url": null
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/StocksBarsGroupedRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "required": [
                    "data",
                    "meta",
                    "pagination"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Daily bars of every US stock for one date.",
        "tags": [
          "stocks"
        ],
        "x-dataset": "equities",
        "x-history-params": [
          "date"
        ],
        "x-paginated": true
      }
    },
    "/v1/stocks/conditions": {
      "get": {
        "description": "Decodes the condition codes on trades and quotes: name, kind, the data types a code applies to and whether trades carrying it update the consolidated high/low, open/close and volume. Reference data, cached for 24 hours.",
        "operationId": "stocksConditions",
        "parameters": [
          {
            "description": "Only codes used on this data type: trade, bbo or nbbo.",
            "in": "query",
            "name": "data_type",
            "required": false,
            "schema": {
              "enum": [
                "trade",
                "bbo",
                "nbbo"
              ],
              "type": "string"
            }
          },
          {
            "description": "Maximum rows to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 100,
              "maximum": 200,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Opaque cursor returned as pagination.next_cursor_id; resumes the same query on the next page.",
            "in": "query",
            "name": "cursor_id",
            "required": false,
            "schema": {
              "maxLength": 1024,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "abbreviation": "I",
                      "consolidated_rules": {
                        "updates_high_low": false,
                        "updates_open_close": false,
                        "updates_volume": true
                      },
                      "data_types": [
                        "trade"
                      ],
                      "description": "A trade of fewer than 100 shares.",
                      "exchange": null,
                      "id": 37,
                      "legacy": false,
                      "name": "Odd Lot Trade",
                      "type": "sale_condition"
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "sip"
                  },
                  "pagination": {
                    "count": 1,
                    "has_more": false,
                    "limit": 100,
                    "next_cursor_id": null,
                    "next_url": null
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/StocksConditionsRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "required": [
                    "data",
                    "meta",
                    "pagination"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Trade and quote condition codes.",
        "tags": [
          "stocks"
        ],
        "x-dataset": "equities",
        "x-paginated": true
      }
    },
    "/v1/stocks/dark-pool/flow": {
      "get": {
        "description": "How much traded off-exchange in each interval of one exchange date (04:00 to 20:00 Eastern), oldest first. The date defaults to the latest captured trading date. Buckets before the capture began are absent. Served from the platform's capture of equity prints: the tickers it captures are the always-on liquid ETFs plus tickers requested on demand (up to eight at a time, each for five minutes after the last request), so a symbol seen for the first time returns data only from the moment capture began; meta.coverage.captured_since says when. Use /v1/stocks/dark-pool/trades for the full tape of any symbol.",
        "operationId": "stocksDarkPoolFlow",
        "parameters": [
          {
            "description": "Ticker symbol, for example SPY.",
            "in": "query",
            "name": "symbol",
            "required": true,
            "schema": {
              "maxLength": 11,
              "pattern": "^[A-Za-z]{1,6}(\\.[A-Za-z0-9]{1,4})?$",
              "type": "string"
            }
          },
          {
            "description": "Exchange date, YYYY-MM-DD. Defaults to the latest captured trading date.",
            "in": "query",
            "name": "date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Bucket length: 1m, 5m, 15m, 30m or 1h.",
            "in": "query",
            "name": "interval",
            "required": false,
            "schema": {
              "default": "5m",
              "enum": [
                "1m",
                "5m",
                "15m",
                "30m",
                "1h"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "notional": 18400000,
                      "price": 601.2,
                      "size": 30600,
                      "start_time": 1792101600000,
                      "trades": 212
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "sip"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/StocksDarkPoolFlowRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Off-exchange dollar value, shares and trades per interval.",
        "tags": [
          "stocks"
        ],
        "x-dataset": "equities",
        "x-history-params": [
          "date"
        ],
        "x-mcp": true
      }
    },
    "/v1/stocks/dark-pool/levels": {
      "get": {
        "description": "The prices at which the most off-exchange dollar value printed, rounded to whole cents and ranked by notional, aggregated over one date or, without date, over the last five trading sessions. Odd-lot, contingent, official and corrected prints are excluded. Served from the platform's capture of equity prints: the tickers it captures are the always-on liquid ETFs plus tickers requested on demand (up to eight at a time, each for five minutes after the last request), so a symbol seen for the first time returns data only from the moment capture began; meta.coverage.captured_since says when. Use /v1/stocks/dark-pool/trades for the full tape of any symbol.",
        "operationId": "stocksDarkPoolLevels",
        "parameters": [
          {
            "description": "Ticker symbol, for example SPY.",
            "in": "query",
            "name": "symbol",
            "required": true,
            "schema": {
              "maxLength": 11,
              "pattern": "^[A-Za-z]{1,6}(\\.[A-Za-z0-9]{1,4})?$",
              "type": "string"
            }
          },
          {
            "description": "A single exchange date, YYYY-MM-DD. Defaults to the last five trading sessions.",
            "in": "query",
            "name": "date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Number of price levels to return, ranked by notional.",
            "in": "query",
            "name": "top",
            "required": false,
            "schema": {
              "default": 25,
              "maximum": 200,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Only levels with at least this dollar value.",
            "in": "query",
            "name": "min_notional",
            "required": false,
            "schema": {
              "maximum": 1000000000000000,
              "minimum": 0,
              "type": "number"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "complete_sessions": [
                      "2026-10-15"
                    ],
                    "latest_price": 601.25,
                    "levels": [
                      {
                        "last_timestamp": 1792101600000,
                        "notional": 412000000,
                        "price": 600,
                        "size": 686000,
                        "trades": 1840
                      }
                    ],
                    "partial_sessions": [],
                    "sessions": [
                      "2026-10-15"
                    ],
                    "symbol": "SPY"
                  },
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "sip"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/StocksDarkPoolLevelsRow"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Off-exchange price levels ranked by dollar value.",
        "tags": [
          "stocks"
        ],
        "x-dataset": "equities",
        "x-history-params": [
          "date"
        ],
        "x-mcp": true
      }
    },
    "/v1/stocks/dark-pool/summary": {
      "get": {
        "description": "How much of one stock's trading on a date was reported off-exchange: trades, shares and dollars, the off-exchange share of each, and the split by trade reporting facility. Computed by scanning the date's trades; corrected and cancelled prints are excluded. Each request reads up to eight pages of 50,000 trades and continues where the previous one stopped, so a liquid symbol's day completes over successive requests: until scan_complete is true the totals cover the time up to covered_through only (scan_complete is also false while a scan of the day is running). A day in progress is read up to 15 seconds behind the present and refreshed at most every 30 seconds; finished days are served from stored totals.",
        "operationId": "stocksDarkPoolSummary",
        "parameters": [
          {
            "description": "Ticker symbol, for example AAPL.",
            "in": "query",
            "name": "symbol",
            "required": true,
            "schema": {
              "maxLength": 11,
              "pattern": "^[A-Za-z]{1,6}(\\.[A-Za-z0-9]{1,4})?$",
              "type": "string"
            }
          },
          {
            "description": "Exchange date, YYYY-MM-DD.",
            "in": "query",
            "name": "date",
            "required": true,
            "schema": {
              "format": "date",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "covered_through": 1792051200000,
                    "date": "2026-10-15",
                    "facilities": [
                      {
                        "average_trade_notional": 17333.33,
                        "facility": "FINRA/Nasdaq TRF Carteret",
                        "notional": 2080000000,
                        "share_of_off_exchange_notional": 0.52,
                        "trades": 120000,
                        "trf_id": 202,
                        "volume": 9000000
                      }
                    ],
                    "off_exchange_notional": 4000000000,
                    "off_exchange_share_notional": 0.421,
                    "off_exchange_share_trades": 0.366,
                    "off_exchange_share_volume": 0.422,
                    "off_exchange_trades": 224000,
                    "off_exchange_volume": 17400000,
                    "scan_complete": true,
                    "scanned_trades": 612000,
                    "symbol": "AAPL",
                    "total_notional": 9500000000,
                    "total_trades": 612000,
                    "total_volume": 41230000
                  },
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "sip"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/StocksDarkPoolSummaryRow"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Off-exchange share, notional and trade count of a stock for one date.",
        "tags": [
          "stocks"
        ],
        "x-dataset": "equities",
        "x-history-params": [
          "date"
        ],
        "x-mcp": true
      }
    },
    "/v1/stocks/dark-pool/trades": {
      "get": {
        "description": "The prints of one stock reported through a FINRA trade reporting facility (exchange id 4): dark pools, alternative trading systems and internalizers. The tape does not say which venue executed a trade; trf_id says which facility received the report (201 FINRA/NYSE TRF, 202 FINRA/Nasdaq TRF Carteret, 203 FINRA/Nasdaq TRF Chicago). Off-exchange reports can arrive up to ten seconds late. Same row shape, paging and filters as /v1/stocks/trades. Filters run while the platform scans the tape, within a per-request budget of up to four pages of 50,000 trades: when the budget is spent before limit matches are found the page is short, meta.coverage.scan_complete is false and pagination still carries a cursor_id to continue the scan; meta.coverage.scanned_through says how far the scan reached. A page is complete when scan_complete is true. meta.source is finra_trf.",
        "operationId": "stocksDarkPoolTrades",
        "parameters": [
          {
            "description": "Ticker symbol, for example AAPL.",
            "in": "query",
            "name": "symbol",
            "required": true,
            "schema": {
              "maxLength": 11,
              "pattern": "^[A-Za-z]{1,6}(\\.[A-Za-z0-9]{1,4})?$",
              "type": "string"
            }
          },
          {
            "description": "Inclusive start of the window. Defaults to the start of the current exchange date.",
            "in": "query",
            "name": "start_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "Exclusive end of the window. Defaults to the end of the exchange date of start_time. At most 31 days after start_time.",
            "in": "query",
            "name": "end_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "A whole exchange date (YYYY-MM-DD, 00:00 to 24:00 Eastern, extended hours included) instead of start_time and end_time.",
            "in": "query",
            "name": "date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Only trades of at least this many shares.",
            "in": "query",
            "name": "min_size",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": 0,
              "type": "number"
            }
          },
          {
            "description": "Only trades of at least this dollar value (price times size).",
            "in": "query",
            "name": "min_notional",
            "required": false,
            "schema": {
              "maximum": 1000000000000000,
              "minimum": 0,
              "type": "number"
            }
          },
          {
            "description": "Only trades carrying any of these condition codes (comma-separated, at most 32).",
            "explode": false,
            "in": "query",
            "name": "conditions",
            "required": false,
            "schema": {
              "items": {
                "type": "integer"
              },
              "maxItems": 32,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Drop trades carrying any of these condition codes (comma-separated, at most 32).",
            "explode": false,
            "in": "query",
            "name": "exclude_conditions",
            "required": false,
            "schema": {
              "items": {
                "type": "integer"
              },
              "maxItems": 32,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Only prints received by these trade reporting facility ids, for example 202,203 (comma-separated, at most 16).",
            "explode": false,
            "in": "query",
            "name": "trf",
            "required": false,
            "schema": {
              "items": {
                "type": "integer"
              },
              "maxItems": 16,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Include prints that were later corrected or cancelled, flagged in correction (default false).",
            "in": "query",
            "name": "include_corrections",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Maximum rows to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 1000,
              "maximum": 10000,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Opaque cursor returned as pagination.next_cursor_id; resumes the same query on the next page.",
            "in": "query",
            "name": "cursor_id",
            "required": false,
            "schema": {
              "maxLength": 1024,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "conditions": [
                        12
                      ],
                      "correction": null,
                      "exchange": 4,
                      "notional": 2892750,
                      "off_exchange": true,
                      "participant_timestamp": 1760659200120,
                      "price": 231.42,
                      "sequence_number": 1563,
                      "size": 12500,
                      "symbol": "AAPL",
                      "tape": 3,
                      "timestamp": 1760659200123,
                      "timestamp_ns": "1760659200123456789",
                      "trade_id": "52983525029461",
                      "trf_id": 202,
                      "trf_timestamp": 1760659200121
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "sip"
                  },
                  "pagination": {
                    "count": 1,
                    "has_more": false,
                    "limit": 1000,
                    "next_cursor_id": null,
                    "next_url": null
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/StocksDarkPoolTradesRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "required": [
                    "data",
                    "meta",
                    "pagination"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Off-exchange (dark pool) prints of a stock, oldest first.",
        "tags": [
          "stocks"
        ],
        "x-dataset": "equities",
        "x-history-params": [
          "start_time",
          "end_time",
          "date"
        ],
        "x-mcp": true,
        "x-paginated": true
      }
    },
    "/v1/stocks/dividends": {
      "get": {
        "description": "Historical and declared cash dividends with declaration, ex-dividend, record and pay dates, amount per share, payment frequency per year (1 annual, 4 quarterly, 12 monthly, 0 one-time) and kind.",
        "operationId": "stocksDividends",
        "parameters": [
          {
            "description": "Only this ticker symbol.",
            "in": "query",
            "name": "symbol",
            "required": false,
            "schema": {
              "maxLength": 11,
              "pattern": "^[A-Za-z]{1,6}(\\.[A-Za-z0-9]{1,4})?$",
              "type": "string"
            }
          },
          {
            "description": "Inclusive earliest ex-dividend date, YYYY-MM-DD.",
            "in": "query",
            "name": "start_date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Inclusive latest ex-dividend date, YYYY-MM-DD.",
            "in": "query",
            "name": "end_date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Maximum rows to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 100,
              "maximum": 999,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Opaque cursor returned as pagination.next_cursor_id; resumes the same query on the next page.",
            "in": "query",
            "name": "cursor_id",
            "required": false,
            "schema": {
              "maxLength": 1024,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "cash_amount": 0.26,
                      "currency": "USD",
                      "declaration_date": "2026-08-01",
                      "dividend_type": "regular",
                      "ex_dividend_date": "2026-08-11",
                      "frequency": 4,
                      "id": "E8e3c4298e3c3f3e1ab9c3c3d3b8c0d2",
                      "pay_date": "2026-08-14",
                      "record_date": "2026-08-11",
                      "symbol": "AAPL"
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "sip"
                  },
                  "pagination": {
                    "count": 1,
                    "has_more": false,
                    "limit": 100,
                    "next_cursor_id": null,
                    "next_url": null
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/StocksDividendsRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "required": [
                    "data",
                    "meta",
                    "pagination"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Cash dividends, newest first.",
        "tags": [
          "stocks"
        ],
        "x-dataset": "equities",
        "x-paginated": true
      }
    },
    "/v1/stocks/exchanges": {
      "get": {
        "description": "Maps the numeric exchange ids on trades and quotes to venue names, market identifier codes and kinds (exchange, trf for trade reporting facilities, sip for consolidated feeds, orf for the OTC reporting facility). Several trade reporting facility records share id 4: an off-exchange print is told apart by its trf_id. Reference data, cached for 24 hours.",
        "operationId": "stocksExchanges",
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "acronym": "NYSE",
                      "id": 10,
                      "mic": "XNYS",
                      "name": "New York Stock Exchange",
                      "operating_mic": "XNYS",
                      "participant_id": "N",
                      "type": "exchange",
                      "url": "https://www.nyse.com"
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "sip"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/StocksExchangesRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Trading venues and reporting facilities behind the exchange ids.",
        "tags": [
          "stocks"
        ],
        "x-dataset": "equities"
      }
    },
    "/v1/stocks/financials/balance-sheets": {
      "get": {
        "description": "Balance sheets as reported in SEC filings, one row per reporting period, newest first. timeframe selects quarterly (the default), annual or trailing twelve month periods where available. Periods that were restated appear once per filing. Access depends on the financial data entitlement; without it the route answers 503.",
        "operationId": "stocksFinancialsBalance",
        "parameters": [
          {
            "description": "Ticker symbol, for example AAPL.",
            "in": "query",
            "name": "symbol",
            "required": true,
            "schema": {
              "maxLength": 11,
              "pattern": "^[A-Za-z]{1,6}(\\.[A-Za-z0-9]{1,4})?$",
              "type": "string"
            }
          },
          {
            "description": "Reporting period type (default quarterly).",
            "in": "query",
            "name": "timeframe",
            "required": false,
            "schema": {
              "default": "quarterly",
              "enum": [
                "quarterly",
                "annual"
              ],
              "type": "string"
            }
          },
          {
            "description": "Inclusive earliest period end date, YYYY-MM-DD.",
            "in": "query",
            "name": "start_date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Inclusive latest period end date, YYYY-MM-DD.",
            "in": "query",
            "name": "end_date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Maximum rows to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 1000,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Opaque cursor returned as pagination.next_cursor_id; resumes the same query on the next page.",
            "in": "query",
            "name": "cursor_id",
            "required": false,
            "schema": {
              "maxLength": 1024,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "accounts_payable": null,
                      "accrued_and_other_current_liabilities": null,
                      "accumulated_other_comprehensive_income": null,
                      "additional_paid_in_capital": null,
                      "cash_and_equivalents": 30000000000,
                      "cik": "0000320193",
                      "commitments_and_contingencies": null,
                      "common_stock": null,
                      "debt_current": null,
                      "deferred_revenue_current": null,
                      "filing_date": "2026-08-01",
                      "fiscal_quarter": 3,
                      "fiscal_year": 2026,
                      "goodwill": null,
                      "intangible_assets_net": null,
                      "inventories": null,
                      "long_term_debt_and_capital_lease_obligations": null,
                      "noncontrolling_interest": null,
                      "other_assets": null,
                      "other_current_assets": null,
                      "other_equity": null,
                      "other_noncurrent_liabilities": null,
                      "period_end": "2026-06-27",
                      "preferred_stock": null,
                      "property_plant_equipment_net": null,
                      "receivables": null,
                      "retained_earnings_deficit": null,
                      "short_term_investments": null,
                      "symbols": [
                        "AAPL"
                      ],
                      "timeframe": "quarterly",
                      "total_assets": 350000000000,
                      "total_current_assets": null,
                      "total_current_liabilities": null,
                      "total_equity": 80000000000,
                      "total_equity_attributable_to_parent": null,
                      "total_liabilities": 270000000000,
                      "total_liabilities_and_equity": null,
                      "treasury_stock": null
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "sip"
                  },
                  "pagination": {
                    "count": 1,
                    "has_more": false,
                    "limit": 20,
                    "next_cursor_id": null,
                    "next_url": null
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/StocksFinancialsBalanceRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "required": [
                    "data",
                    "meta",
                    "pagination"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Balance sheets of a company, newest period first.",
        "tags": [
          "stocks"
        ],
        "x-dataset": "equities",
        "x-paginated": true
      }
    },
    "/v1/stocks/financials/cash-flow-statements": {
      "get": {
        "description": "Cash flow statements as reported in SEC filings, one row per reporting period, newest first. timeframe selects quarterly (the default), annual or trailing twelve month periods where available. Periods that were restated appear once per filing. Access depends on the financial data entitlement; without it the route answers 503.",
        "operationId": "stocksFinancialsCashflow",
        "parameters": [
          {
            "description": "Ticker symbol, for example AAPL.",
            "in": "query",
            "name": "symbol",
            "required": true,
            "schema": {
              "maxLength": 11,
              "pattern": "^[A-Za-z]{1,6}(\\.[A-Za-z0-9]{1,4})?$",
              "type": "string"
            }
          },
          {
            "description": "Reporting period type (default quarterly).",
            "in": "query",
            "name": "timeframe",
            "required": false,
            "schema": {
              "default": "quarterly",
              "enum": [
                "quarterly",
                "annual",
                "trailing_twelve_months"
              ],
              "type": "string"
            }
          },
          {
            "description": "Inclusive earliest period end date, YYYY-MM-DD.",
            "in": "query",
            "name": "start_date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Inclusive latest period end date, YYYY-MM-DD.",
            "in": "query",
            "name": "end_date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Maximum rows to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 1000,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Opaque cursor returned as pagination.next_cursor_id; resumes the same query on the next page.",
            "in": "query",
            "name": "cursor_id",
            "required": false,
            "schema": {
              "maxLength": 1024,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "cash_from_operating_activities_continuing_operations": null,
                      "change_in_cash_and_equivalents": null,
                      "change_in_other_operating_assets_and_liabilities_net": null,
                      "cik": "0000320193",
                      "depreciation_depletion_and_amortization": null,
                      "dividends": -3800000000,
                      "effect_of_currency_exchange_rate": null,
                      "filing_date": "2026-08-01",
                      "fiscal_quarter": 3,
                      "fiscal_year": 2026,
                      "income_loss_from_discontinued_operations": null,
                      "long_term_debt_issuances_repayments": null,
                      "net_cash_from_financing_activities": null,
                      "net_cash_from_financing_activities_continuing_operations": null,
                      "net_cash_from_financing_activities_discontinued_operations": null,
                      "net_cash_from_investing_activities": null,
                      "net_cash_from_investing_activities_continuing_operations": null,
                      "net_cash_from_investing_activities_discontinued_operations": null,
                      "net_cash_from_operating_activities": 28000000000,
                      "net_cash_from_operating_activities_discontinued_operations": null,
                      "net_income": null,
                      "noncontrolling_interests": null,
                      "other_cash_adjustments": null,
                      "other_financing_activities": null,
                      "other_investing_activities": null,
                      "other_operating_activities": null,
                      "period_end": "2026-06-27",
                      "purchase_of_property_plant_and_equipment": -3000000000,
                      "sale_of_property_plant_and_equipment": null,
                      "short_term_debt_issuances_repayments": null,
                      "symbols": [
                        "AAPL"
                      ],
                      "timeframe": "quarterly"
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "sip"
                  },
                  "pagination": {
                    "count": 1,
                    "has_more": false,
                    "limit": 20,
                    "next_cursor_id": null,
                    "next_url": null
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/StocksFinancialsCashflowRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "required": [
                    "data",
                    "meta",
                    "pagination"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Cash flow statements of a company, newest period first.",
        "tags": [
          "stocks"
        ],
        "x-dataset": "equities",
        "x-paginated": true
      }
    },
    "/v1/stocks/financials/income-statements": {
      "get": {
        "description": "Income statements as reported in SEC filings, one row per reporting period, newest first. timeframe selects quarterly (the default), annual or trailing twelve month periods where available. Periods that were restated appear once per filing. Access depends on the financial data entitlement; without it the route answers 503.",
        "operationId": "stocksFinancialsIncome",
        "parameters": [
          {
            "description": "Ticker symbol, for example AAPL.",
            "in": "query",
            "name": "symbol",
            "required": true,
            "schema": {
              "maxLength": 11,
              "pattern": "^[A-Za-z]{1,6}(\\.[A-Za-z0-9]{1,4})?$",
              "type": "string"
            }
          },
          {
            "description": "Reporting period type (default quarterly).",
            "in": "query",
            "name": "timeframe",
            "required": false,
            "schema": {
              "default": "quarterly",
              "enum": [
                "quarterly",
                "annual",
                "trailing_twelve_months"
              ],
              "type": "string"
            }
          },
          {
            "description": "Inclusive earliest period end date, YYYY-MM-DD.",
            "in": "query",
            "name": "start_date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Inclusive latest period end date, YYYY-MM-DD.",
            "in": "query",
            "name": "end_date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Maximum rows to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 1000,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Opaque cursor returned as pagination.next_cursor_id; resumes the same query on the next page.",
            "in": "query",
            "name": "cursor_id",
            "required": false,
            "schema": {
              "maxLength": 1024,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "basic_earnings_per_share": null,
                      "basic_shares_outstanding": null,
                      "cik": "0000320193",
                      "consolidated_net_income_loss": null,
                      "cost_of_revenue": null,
                      "depreciation_depletion_amortization": null,
                      "diluted_earnings_per_share": 1.4,
                      "diluted_shares_outstanding": null,
                      "discontinued_operations": null,
                      "ebitda": null,
                      "equity_in_affiliates": null,
                      "extraordinary_items": null,
                      "filing_date": "2026-08-01",
                      "fiscal_quarter": 3,
                      "fiscal_year": 2026,
                      "gross_profit": 43000000000,
                      "income_before_income_taxes": null,
                      "income_taxes": null,
                      "interest_expense": null,
                      "interest_income": null,
                      "net_income_loss_attributable_common_shareholders": null,
                      "noncontrolling_interest": null,
                      "operating_income": 29000000000,
                      "other_income_expense": null,
                      "other_operating_expenses": null,
                      "period_end": "2026-06-27",
                      "preferred_stock_dividends_declared": null,
                      "research_development": null,
                      "revenue": 94000000000,
                      "selling_general_administrative": null,
                      "symbols": [
                        "AAPL"
                      ],
                      "timeframe": "quarterly",
                      "total_operating_expenses": null,
                      "total_other_income_expense": null
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "sip"
                  },
                  "pagination": {
                    "count": 1,
                    "has_more": false,
                    "limit": 20,
                    "next_cursor_id": null,
                    "next_url": null
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/StocksFinancialsIncomeRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "required": [
                    "data",
                    "meta",
                    "pagination"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Income statements of a company, newest period first.",
        "tags": [
          "stocks"
        ],
        "x-dataset": "equities",
        "x-paginated": true
      }
    },
    "/v1/stocks/financials/ratios": {
      "get": {
        "description": "Daily ratios calculated from the latest filings and the day's price: price to earnings, book, sales and cash flow, enterprise value multiples, dividend yield, leverage, liquidity and returns. Access depends on the financial data entitlement; without it the route answers 503.",
        "operationId": "stocksFinancialsRatios",
        "parameters": [
          {
            "description": "Ticker symbol, for example AAPL.",
            "in": "query",
            "name": "symbol",
            "required": true,
            "schema": {
              "maxLength": 11,
              "pattern": "^[A-Za-z]{1,6}(\\.[A-Za-z0-9]{1,4})?$",
              "type": "string"
            }
          },
          {
            "description": "Inclusive earliest ratio date, YYYY-MM-DD.",
            "in": "query",
            "name": "start_date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Inclusive latest ratio date, YYYY-MM-DD.",
            "in": "query",
            "name": "end_date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Maximum rows to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 1000,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Opaque cursor returned as pagination.next_cursor_id; resumes the same query on the next page.",
            "in": "query",
            "name": "cursor_id",
            "required": false,
            "schema": {
              "maxLength": 1024,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "average_volume": null,
                      "cash": null,
                      "cik": "0000320193",
                      "current": null,
                      "date": "2026-10-15",
                      "debt_to_equity": null,
                      "dividend_yield": 0.0045,
                      "earnings_per_share": null,
                      "enterprise_value": null,
                      "ev_to_ebitda": null,
                      "ev_to_sales": null,
                      "free_cash_flow": null,
                      "market_cap": 3450000000000,
                      "price": 231.42,
                      "price_to_book": null,
                      "price_to_cash_flow": null,
                      "price_to_earnings": 32.1,
                      "price_to_free_cash_flow": null,
                      "price_to_sales": null,
                      "quick": null,
                      "return_on_assets": null,
                      "return_on_equity": null,
                      "symbol": "AAPL"
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "sip"
                  },
                  "pagination": {
                    "count": 1,
                    "has_more": false,
                    "limit": 20,
                    "next_cursor_id": null,
                    "next_url": null
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/StocksFinancialsRatiosRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "required": [
                    "data",
                    "meta",
                    "pagination"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Valuation and financial ratios of a company, newest first.",
        "tags": [
          "stocks"
        ],
        "x-dataset": "equities",
        "x-paginated": true
      }
    },
    "/v1/stocks/imbalances": {
      "get": {
        "description": "Opening, closing and halt-resumption auction imbalances of exchange-listed stocks, with the indicative price and paired quantity, newest first. Captured from the live stream from the moment it was enabled and kept for seven days: meta.coverage.captured_from is the oldest event available, and events from before it, or from while the stream was down, do not exist here.",
        "operationId": "stocksImbalances",
        "parameters": [
          {
            "description": "Ticker symbol, for example JPM. Omit for every symbol.",
            "in": "query",
            "name": "symbol",
            "required": false,
            "schema": {
              "maxLength": 10,
              "pattern": "^[A-Za-z]{1,6}(\\.[A-Za-z0-9]{1,4})?$",
              "type": "string"
            }
          },
          {
            "description": "Start of the window, inclusive. Defaults to the start of the seven-day capture.",
            "in": "query",
            "name": "start_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "End of the window, exclusive. Defaults to now.",
            "in": "query",
            "name": "end_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "Newest first (desc, the default) or oldest first (asc) by event time.",
            "in": "query",
            "name": "order",
            "required": false,
            "schema": {
              "default": "desc",
              "enum": [
                "asc",
                "desc"
              ],
              "type": "string"
            }
          },
          {
            "description": "Maximum rows to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 1000,
              "maximum": 5000,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Opaque cursor returned as pagination.next_cursor_id; resumes the same query on the next page.",
            "in": "query",
            "name": "cursor_id",
            "required": false,
            "schema": {
              "maxLength": 1024,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "auction_clock_et": "16:00",
                      "auction_timestamp": 1792180800000,
                      "auction_type": "closing",
                      "book_clearing_price": 231.42,
                      "exchange": 10,
                      "imbalance_quantity": 480000,
                      "paired_quantity": 1240000,
                      "sequence_number": 44,
                      "symbol": "JPM",
                      "timestamp": 1792180800000
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "sip"
                  },
                  "pagination": {
                    "count": 1,
                    "has_more": false,
                    "limit": 1000,
                    "next_cursor_id": null,
                    "next_url": null
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/StocksImbalancesRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "required": [
                    "data",
                    "meta",
                    "pagination"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Captured NYSE auction imbalances.",
        "tags": [
          "stocks"
        ],
        "x-dataset": "equities",
        "x-history-params": [
          "start_time",
          "end_time"
        ],
        "x-paginated": true
      }
    },
    "/v1/stocks/indicators/ema": {
      "get": {
        "description": "Exponential moving average of a stock's price series, newest first by default. Computed from split-adjusted aggregate bars over the range start_time to end_time (by default as far back as your plan's history allows). The response is not paged: when more values exist in the range than limit, meta.coverage.complete is false; narrow start_time and end_time to read the rest.",
        "operationId": "stocksIndicatorsEma",
        "parameters": [
          {
            "description": "Ticker symbol, for example AAPL.",
            "in": "query",
            "name": "symbol",
            "required": true,
            "schema": {
              "maxLength": 11,
              "pattern": "^[A-Za-z]{1,6}(\\.[A-Za-z0-9]{1,4})?$",
              "type": "string"
            }
          },
          {
            "description": "Bar size the indicator is computed on: 1m, 1h, 1d, 1w or 1mo.",
            "in": "query",
            "name": "interval",
            "required": false,
            "schema": {
              "default": "1d",
              "enum": [
                "1m",
                "1h",
                "1d",
                "1w",
                "1mo"
              ],
              "type": "string"
            }
          },
          {
            "description": "Window in bars (default 50).",
            "in": "query",
            "name": "window",
            "required": false,
            "schema": {
              "maximum": 500,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Price the indicator is computed on (default close).",
            "in": "query",
            "name": "series_type",
            "required": false,
            "schema": {
              "enum": [
                "open",
                "high",
                "low",
                "close"
              ],
              "type": "string"
            }
          },
          {
            "description": "Use split-adjusted bars (default true).",
            "in": "query",
            "name": "adjusted",
            "required": false,
            "schema": {
              "default": true,
              "type": "boolean"
            }
          },
          {
            "description": "Inclusive start of the window.",
            "in": "query",
            "name": "start_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "Exclusive end of the window.",
            "in": "query",
            "name": "end_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "Maximum values to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 100,
              "maximum": 1000,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "desc for newest first (default) or asc.",
            "in": "query",
            "name": "order",
            "required": false,
            "schema": {
              "default": "desc",
              "enum": [
                "asc",
                "desc"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "start_time": 1760659200000,
                      "value": 228.41
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "sip"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/StocksIndicatorsEmaRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Exponential moving average of a stock.",
        "tags": [
          "stocks"
        ],
        "x-dataset": "equities",
        "x-history-params": [
          "start_time",
          "end_time"
        ]
      }
    },
    "/v1/stocks/indicators/macd": {
      "get": {
        "description": "MACD of a stock's price series, newest first by default. The MACD line is the short EMA minus the long EMA.Computed from split-adjusted aggregate bars over the range start_time to end_time (by default as far back as your plan's history allows). The response is not paged: when more values exist in the range than limit, meta.coverage.complete is false; narrow start_time and end_time to read the rest.",
        "operationId": "stocksIndicatorsMacd",
        "parameters": [
          {
            "description": "Ticker symbol, for example AAPL.",
            "in": "query",
            "name": "symbol",
            "required": true,
            "schema": {
              "maxLength": 11,
              "pattern": "^[A-Za-z]{1,6}(\\.[A-Za-z0-9]{1,4})?$",
              "type": "string"
            }
          },
          {
            "description": "Bar size the indicator is computed on: 1m, 1h, 1d, 1w or 1mo.",
            "in": "query",
            "name": "interval",
            "required": false,
            "schema": {
              "default": "1d",
              "enum": [
                "1m",
                "1h",
                "1d",
                "1w",
                "1mo"
              ],
              "type": "string"
            }
          },
          {
            "description": "Short EMA window in bars (default 12).",
            "in": "query",
            "name": "short_window",
            "required": false,
            "schema": {
              "maximum": 500,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Long EMA window in bars (default 26).",
            "in": "query",
            "name": "long_window",
            "required": false,
            "schema": {
              "maximum": 500,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Signal EMA window in bars (default 9).",
            "in": "query",
            "name": "signal_window",
            "required": false,
            "schema": {
              "maximum": 500,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Price the indicator is computed on (default close).",
            "in": "query",
            "name": "series_type",
            "required": false,
            "schema": {
              "enum": [
                "open",
                "high",
                "low",
                "close"
              ],
              "type": "string"
            }
          },
          {
            "description": "Use split-adjusted bars (default true).",
            "in": "query",
            "name": "adjusted",
            "required": false,
            "schema": {
              "default": true,
              "type": "boolean"
            }
          },
          {
            "description": "Inclusive start of the window.",
            "in": "query",
            "name": "start_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "Exclusive end of the window.",
            "in": "query",
            "name": "end_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "Maximum values to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 100,
              "maximum": 1000,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "desc for newest first (default) or asc.",
            "in": "query",
            "name": "order",
            "required": false,
            "schema": {
              "default": "desc",
              "enum": [
                "asc",
                "desc"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "histogram": 0.31,
                      "signal": 1.21,
                      "start_time": 1760659200000,
                      "value": 1.52
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "sip"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/StocksIndicatorsMacdRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "MACD of a stock.",
        "tags": [
          "stocks"
        ],
        "x-dataset": "equities",
        "x-history-params": [
          "start_time",
          "end_time"
        ]
      }
    },
    "/v1/stocks/indicators/rsi": {
      "get": {
        "description": "Relative strength index of a stock's price series, newest first by default. Computed from split-adjusted aggregate bars over the range start_time to end_time (by default as far back as your plan's history allows). The response is not paged: when more values exist in the range than limit, meta.coverage.complete is false; narrow start_time and end_time to read the rest.",
        "operationId": "stocksIndicatorsRsi",
        "parameters": [
          {
            "description": "Ticker symbol, for example AAPL.",
            "in": "query",
            "name": "symbol",
            "required": true,
            "schema": {
              "maxLength": 11,
              "pattern": "^[A-Za-z]{1,6}(\\.[A-Za-z0-9]{1,4})?$",
              "type": "string"
            }
          },
          {
            "description": "Bar size the indicator is computed on: 1m, 1h, 1d, 1w or 1mo.",
            "in": "query",
            "name": "interval",
            "required": false,
            "schema": {
              "default": "1d",
              "enum": [
                "1m",
                "1h",
                "1d",
                "1w",
                "1mo"
              ],
              "type": "string"
            }
          },
          {
            "description": "Window in bars (default 14).",
            "in": "query",
            "name": "window",
            "required": false,
            "schema": {
              "maximum": 500,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Price the indicator is computed on (default close).",
            "in": "query",
            "name": "series_type",
            "required": false,
            "schema": {
              "enum": [
                "open",
                "high",
                "low",
                "close"
              ],
              "type": "string"
            }
          },
          {
            "description": "Use split-adjusted bars (default true).",
            "in": "query",
            "name": "adjusted",
            "required": false,
            "schema": {
              "default": true,
              "type": "boolean"
            }
          },
          {
            "description": "Inclusive start of the window.",
            "in": "query",
            "name": "start_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "Exclusive end of the window.",
            "in": "query",
            "name": "end_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "Maximum values to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 100,
              "maximum": 1000,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "desc for newest first (default) or asc.",
            "in": "query",
            "name": "order",
            "required": false,
            "schema": {
              "default": "desc",
              "enum": [
                "asc",
                "desc"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "start_time": 1760659200000,
                      "value": 228.41
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "sip"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/StocksIndicatorsRsiRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Relative strength index of a stock.",
        "tags": [
          "stocks"
        ],
        "x-dataset": "equities",
        "x-history-params": [
          "start_time",
          "end_time"
        ]
      }
    },
    "/v1/stocks/indicators/sma": {
      "get": {
        "description": "Simple moving average of a stock's price series, newest first by default. Computed from split-adjusted aggregate bars over the range start_time to end_time (by default as far back as your plan's history allows). The response is not paged: when more values exist in the range than limit, meta.coverage.complete is false; narrow start_time and end_time to read the rest.",
        "operationId": "stocksIndicatorsSma",
        "parameters": [
          {
            "description": "Ticker symbol, for example AAPL.",
            "in": "query",
            "name": "symbol",
            "required": true,
            "schema": {
              "maxLength": 11,
              "pattern": "^[A-Za-z]{1,6}(\\.[A-Za-z0-9]{1,4})?$",
              "type": "string"
            }
          },
          {
            "description": "Bar size the indicator is computed on: 1m, 1h, 1d, 1w or 1mo.",
            "in": "query",
            "name": "interval",
            "required": false,
            "schema": {
              "default": "1d",
              "enum": [
                "1m",
                "1h",
                "1d",
                "1w",
                "1mo"
              ],
              "type": "string"
            }
          },
          {
            "description": "Window in bars (default 50).",
            "in": "query",
            "name": "window",
            "required": false,
            "schema": {
              "maximum": 500,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Price the indicator is computed on (default close).",
            "in": "query",
            "name": "series_type",
            "required": false,
            "schema": {
              "enum": [
                "open",
                "high",
                "low",
                "close"
              ],
              "type": "string"
            }
          },
          {
            "description": "Use split-adjusted bars (default true).",
            "in": "query",
            "name": "adjusted",
            "required": false,
            "schema": {
              "default": true,
              "type": "boolean"
            }
          },
          {
            "description": "Inclusive start of the window.",
            "in": "query",
            "name": "start_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "Exclusive end of the window.",
            "in": "query",
            "name": "end_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "Maximum values to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 100,
              "maximum": 1000,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "desc for newest first (default) or asc.",
            "in": "query",
            "name": "order",
            "required": false,
            "schema": {
              "default": "desc",
              "enum": [
                "asc",
                "desc"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "start_time": 1760659200000,
                      "value": 228.41
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "sip"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/StocksIndicatorsSmaRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Simple moving average of a stock.",
        "tags": [
          "stocks"
        ],
        "x-dataset": "equities",
        "x-history-params": [
          "start_time",
          "end_time"
        ]
      }
    },
    "/v1/stocks/ipos": {
      "get": {
        "description": "Upcoming and historical IPOs with issuer, status, listing and announcement dates, offer price range, final price, shares offered and the listing exchange. Status runs from rumor and pending through new (listing day) to history.",
        "operationId": "stocksIpos",
        "parameters": [
          {
            "description": "Only IPOs in this status.",
            "in": "query",
            "name": "status",
            "required": false,
            "schema": {
              "enum": [
                "direct_listing_process",
                "history",
                "new",
                "pending",
                "postponed",
                "rumor",
                "withdrawn"
              ],
              "type": "string"
            }
          },
          {
            "description": "Only this ticker symbol.",
            "in": "query",
            "name": "symbol",
            "required": false,
            "schema": {
              "maxLength": 11,
              "pattern": "^[A-Za-z]{1,6}(\\.[A-Za-z0-9]{1,4})?$",
              "type": "string"
            }
          },
          {
            "description": "Inclusive earliest listing date, YYYY-MM-DD.",
            "in": "query",
            "name": "start_date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Inclusive latest listing date, YYYY-MM-DD.",
            "in": "query",
            "name": "end_date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Maximum rows to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 100,
              "maximum": 999,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Opaque cursor returned as pagination.next_cursor_id; resumes the same query on the next page.",
            "in": "query",
            "name": "cursor_id",
            "required": false,
            "schema": {
              "maxLength": 1024,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "announced_date": "2026-10-01",
                      "currency": "USD",
                      "final_issue_price": null,
                      "highest_offer_price": 16,
                      "isin": null,
                      "issuer_name": "New Company, Inc.",
                      "last_updated": "2026-10-14",
                      "listing_date": "2026-11-05",
                      "lot_size": 100,
                      "lowest_offer_price": 14,
                      "max_shares_offered": 9000000,
                      "min_shares_offered": 8000000,
                      "primary_exchange": "XNAS",
                      "security_description": "Class A Common Stock",
                      "security_type": "CS",
                      "shares_outstanding": 52000000,
                      "status": "pending",
                      "symbol": "NEWC",
                      "total_offer_size": 135000000,
                      "us_code": null
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "sip"
                  },
                  "pagination": {
                    "count": 1,
                    "has_more": false,
                    "limit": 100,
                    "next_cursor_id": null,
                    "next_url": null
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/StocksIposRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "required": [
                    "data",
                    "meta",
                    "pagination"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Initial public offerings and direct listings, newest first.",
        "tags": [
          "stocks"
        ],
        "x-dataset": "equities",
        "x-paginated": true
      }
    },
    "/v1/stocks/last-quote": {
      "get": {
        "description": "The last consolidated best bid and offer with sizes, the exchanges quoting them, condition and indicator codes and timestamps. meta.delayed is true when the entitlement is delayed.",
        "operationId": "stocksLastQuote",
        "parameters": [
          {
            "description": "Ticker symbol, for example AAPL.",
            "in": "query",
            "name": "symbol",
            "required": true,
            "schema": {
              "maxLength": 11,
              "pattern": "^[A-Za-z]{1,6}(\\.[A-Za-z0-9]{1,4})?$",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "ask_exchange": 11,
                    "ask_price": 231.43,
                    "ask_size": 200,
                    "bid_exchange": 12,
                    "bid_price": 231.41,
                    "bid_size": 300,
                    "conditions": [
                      1
                    ],
                    "indicators": [
                      602
                    ],
                    "participant_timestamp": 1760659200120,
                    "sequence_number": 98211,
                    "symbol": "AAPL",
                    "tape": 3,
                    "timestamp": 1760659200123,
                    "trf_timestamp": null
                  },
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "sip"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/StocksLastQuoteRow"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "The most recent NBBO quote of a stock.",
        "tags": [
          "stocks"
        ],
        "x-dataset": "equities"
      }
    },
    "/v1/stocks/last-trade": {
      "get": {
        "description": "The last consolidated trade with price, size, exchange, conditions and timestamps. meta.delayed is true when the entitlement is delayed.",
        "operationId": "stocksLastTrade",
        "parameters": [
          {
            "description": "Ticker symbol, for example AAPL.",
            "in": "query",
            "name": "symbol",
            "required": true,
            "schema": {
              "maxLength": 11,
              "pattern": "^[A-Za-z]{1,6}(\\.[A-Za-z0-9]{1,4})?$",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "conditions": [
                      12,
                      37
                    ],
                    "correction": 0,
                    "exchange": 11,
                    "participant_timestamp": 1760659200120,
                    "price": 231.42,
                    "sequence_number": 1563,
                    "size": 100,
                    "symbol": "AAPL",
                    "tape": 3,
                    "timestamp": 1760659200123,
                    "trade_id": "52983525029461",
                    "trf_id": null,
                    "trf_timestamp": null
                  },
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "sip"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/StocksLastTradeRow"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "The most recent trade of a stock.",
        "tags": [
          "stocks"
        ],
        "x-dataset": "equities"
      }
    },
    "/v1/stocks/luld": {
      "get": {
        "description": "Every update of a stock's limit up-limit down price bands, with trading pauses and resumptions (indicators 17 and 18), newest first. Captured from the live stream from the moment it was enabled and kept for seven days: meta.coverage.captured_from is the oldest event available, and events from before it, or from while the stream was down, do not exist here.",
        "operationId": "stocksLuld",
        "parameters": [
          {
            "description": "Ticker symbol, for example JPM. Omit for every symbol.",
            "in": "query",
            "name": "symbol",
            "required": false,
            "schema": {
              "maxLength": 10,
              "pattern": "^[A-Za-z]{1,6}(\\.[A-Za-z0-9]{1,4})?$",
              "type": "string"
            }
          },
          {
            "description": "Start of the window, inclusive. Defaults to the start of the seven-day capture.",
            "in": "query",
            "name": "start_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "End of the window, exclusive. Defaults to now.",
            "in": "query",
            "name": "end_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "Newest first (desc, the default) or oldest first (asc) by event time.",
            "in": "query",
            "name": "order",
            "required": false,
            "schema": {
              "default": "desc",
              "enum": [
                "asc",
                "desc"
              ],
              "type": "string"
            }
          },
          {
            "description": "Maximum rows to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 1000,
              "maximum": 5000,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Opaque cursor returned as pagination.next_cursor_id; resumes the same query on the next page.",
            "in": "query",
            "name": "cursor_id",
            "required": false,
            "schema": {
              "maxLength": 1024,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "indicators": [
                        15
                      ],
                      "lower_limit_price": 219.85,
                      "sequence_number": 91,
                      "state": "band_update",
                      "symbol": "AAPL",
                      "tape": 3,
                      "timestamp": 1792161000123,
                      "upper_limit_price": 242.99
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "sip"
                  },
                  "pagination": {
                    "count": 1,
                    "has_more": false,
                    "limit": 1000,
                    "next_cursor_id": null,
                    "next_url": null
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/StocksLuldRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "required": [
                    "data",
                    "meta",
                    "pagination"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Captured limit up-limit down bands and halts.",
        "tags": [
          "stocks"
        ],
        "x-dataset": "equities",
        "x-history-params": [
          "start_time",
          "end_time"
        ],
        "x-paginated": true
      }
    },
    "/v1/stocks/market-map": {
      "get": {
        "description": "A treemap-ready snapshot of the configured large-cap universe (about a hundred of the largest US companies; the operator can change the list): each company's price, change against the previous close, volume, market capitalization, company name, approximate sector (from the SIC code) and industry text. value holds the metric you chose and rows are ordered by market capitalization. Prices refresh every 2 seconds; company details refresh daily. Share classes of one company appear once (meta.coverage.merged_share_classes counts those folded in). meta.coverage.complete is false when some companies are missing a price or detail.",
        "operationId": "stocksMarketMap",
        "parameters": [
          {
            "description": "The company universe. configured is the platform's large-cap list.",
            "in": "query",
            "name": "universe",
            "required": false,
            "schema": {
              "default": "configured",
              "enum": [
                "configured"
              ],
              "type": "string"
            }
          },
          {
            "description": "What value holds: change_percent (default), change, volume, dollar_volume or market_cap.",
            "in": "query",
            "name": "metric",
            "required": false,
            "schema": {
              "default": "change_percent",
              "enum": [
                "change_percent",
                "change",
                "volume",
                "dollar_volume",
                "market_cap"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "metric": "change_percent",
                    "rows": [
                      {
                        "change": 5.42,
                        "change_percent": 2.4,
                        "dollar_volume": 9540000000,
                        "industry": "ELECTRONIC COMPUTERS",
                        "market_cap": 3450000000000,
                        "name": "Apple Inc.",
                        "previous_close": 226,
                        "price": 231.42,
                        "sector": "Information Technology",
                        "symbol": "AAPL",
                        "value": 2.4,
                        "volume": 41230000
                      }
                    ]
                  },
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "sip"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/StocksMarketMapRow"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Price change, size and sector of the large-cap universe.",
        "tags": [
          "stocks"
        ],
        "x-dataset": "equities",
        "x-mcp": true
      }
    },
    "/v1/stocks/movers": {
      "get": {
        "description": "The twenty stocks with the largest percentage gain or loss since the previous close, among stocks with at least 10,000 shares traded today. Same row shape as the snapshot.",
        "operationId": "stocksMovers",
        "parameters": [
          {
            "description": "gainers or losers.",
            "in": "query",
            "name": "direction",
            "required": false,
            "schema": {
              "default": "gainers",
              "enum": [
                "gainers",
                "losers"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "change": 5.42,
                      "change_percent": 2.4,
                      "day": {
                        "close": 231.42,
                        "high": 232.3,
                        "low": 227.9,
                        "open": 228.1,
                        "volume": 41230000,
                        "vwap": 230.4
                      },
                      "last_quote": {
                        "ask_price": 231.43,
                        "ask_size": 2,
                        "bid_price": 231.41,
                        "bid_size": 3,
                        "timestamp": 1760659200120
                      },
                      "last_trade": {
                        "conditions": [
                          12,
                          37
                        ],
                        "exchange": 11,
                        "price": 231.42,
                        "size": 100,
                        "timestamp": 1760659200123,
                        "trade_id": "52983525029461"
                      },
                      "minute": {
                        "accumulated_volume": 41230000,
                        "close": 231.42,
                        "high": 231.5,
                        "low": 231.2,
                        "open": 231.3,
                        "start_time": 1760659140000,
                        "trades": 211,
                        "volume": 12000,
                        "vwap": 231.38
                      },
                      "prev_day": {
                        "close": 226,
                        "high": 227.2,
                        "low": 224.6,
                        "open": 225,
                        "volume": 39100000,
                        "vwap": 225.9
                      },
                      "price": 231.42,
                      "symbol": "AAPL",
                      "timestamp": 1760659200123
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "sip"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/StocksMoversRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Top 20 gainers or losers of the day.",
        "tags": [
          "stocks"
        ],
        "x-dataset": "equities",
        "x-mcp": true,
        "x-streamable": true
      }
    },
    "/v1/stocks/news": {
      "get": {
        "description": "News articles with title, summary, publisher, link and the tickers each concerns, newest first, paged back in time with cursor_id. Each insight gives the sentiment (positive, neutral or negative) the article carries for one ticker with the reasoning. Without symbol the market-wide feed is returned. The feed is refreshed continuously and cached for a minute; without start_time it reaches back as far as your plan's history allows.",
        "operationId": "stocksNews",
        "parameters": [
          {
            "description": "Only articles that mention this ticker symbol.",
            "in": "query",
            "name": "symbol",
            "required": false,
            "schema": {
              "maxLength": 11,
              "pattern": "^[A-Za-z]{1,6}(\\.[A-Za-z0-9]{1,4})?$",
              "type": "string"
            }
          },
          {
            "description": "Inclusive earliest publication time.",
            "in": "query",
            "name": "start_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "Exclusive latest publication time.",
            "in": "query",
            "name": "end_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "Maximum rows to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 20,
              "maximum": 100,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Opaque cursor returned as pagination.next_cursor_id; resumes the same query on the next page.",
            "in": "query",
            "name": "cursor_id",
            "required": false,
            "schema": {
              "maxLength": 1024,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "author": "A. Reporter",
                      "description": "The company introduced its next-generation processor.",
                      "id": "8ec638777ca03b553ae516761c2a22ba2fdd2f37befae3ab6fdab74e9e5193eb",
                      "image_url": null,
                      "insights": [
                        {
                          "reasoning": "The new chip raises expected margins.",
                          "sentiment": "positive",
                          "symbol": "AAPL"
                        }
                      ],
                      "keywords": [
                        "chips"
                      ],
                      "publisher": {
                        "homepage_url": "https://example.com",
                        "name": "Example News"
                      },
                      "symbols": [
                        "AAPL"
                      ],
                      "timestamp": 1792071000000,
                      "title": "Apple unveils new chip",
                      "url": "https://example.com/apple-chip"
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "sip"
                  },
                  "pagination": {
                    "count": 1,
                    "has_more": false,
                    "limit": 20,
                    "next_cursor_id": null,
                    "next_url": null
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/StocksNewsRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "required": [
                    "data",
                    "meta",
                    "pagination"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Ticker news, newest first.",
        "tags": [
          "stocks"
        ],
        "x-dataset": "equities",
        "x-history-params": [
          "start_time",
          "end_time"
        ],
        "x-mcp": true,
        "x-paginated": true
      }
    },
    "/v1/stocks/open-close": {
      "get": {
        "description": "The regular-session daily bar of one stock and date plus the pre-market opening price and the after-hours closing price. Weekends and holidays return 422 data_unavailable.",
        "operationId": "stocksOpenClose",
        "parameters": [
          {
            "description": "Ticker symbol, for example AAPL.",
            "in": "query",
            "name": "symbol",
            "required": true,
            "schema": {
              "maxLength": 11,
              "pattern": "^[A-Za-z]{1,6}(\\.[A-Za-z0-9]{1,4})?$",
              "type": "string"
            }
          },
          {
            "description": "Trading date, YYYY-MM-DD.",
            "in": "query",
            "name": "date",
            "required": true,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Adjust prices for splits (default true).",
            "in": "query",
            "name": "adjusted",
            "required": false,
            "schema": {
              "default": true,
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "adjusted": true,
                    "after_hours": 231.9,
                    "close": 231.42,
                    "date": "2026-10-15",
                    "high": 232.3,
                    "low": 227.9,
                    "open": 228.1,
                    "pre_market": 227.5,
                    "symbol": "AAPL",
                    "volume": 41230000
                  },
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "sip"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/StocksOpenCloseRow"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Daily open, high, low, close with pre-market and after-hours prices.",
        "tags": [
          "stocks"
        ],
        "x-dataset": "equities",
        "x-history-params": [
          "date"
        ]
      }
    },
    "/v1/stocks/previous-close": {
      "get": {
        "description": "Open, high, low, close, volume and VWAP of the most recent completed trading day.",
        "operationId": "stocksPreviousClose",
        "parameters": [
          {
            "description": "Ticker symbol, for example AAPL.",
            "in": "query",
            "name": "symbol",
            "required": true,
            "schema": {
              "maxLength": 11,
              "pattern": "^[A-Za-z]{1,6}(\\.[A-Za-z0-9]{1,4})?$",
              "type": "string"
            }
          },
          {
            "description": "Adjust prices for splits (default true).",
            "in": "query",
            "name": "adjusted",
            "required": false,
            "schema": {
              "default": true,
              "type": "boolean"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "close": 231.42,
                    "date": "2026-10-15",
                    "high": 232.3,
                    "low": 227.9,
                    "open": 228.1,
                    "start_time": 1792036800000,
                    "symbol": "AAPL",
                    "trades": 512000,
                    "volume": 41230000,
                    "vwap": 230.4
                  },
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "sip"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/StocksPreviousCloseRow"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "The previous trading day's bar.",
        "tags": [
          "stocks"
        ],
        "x-dataset": "equities"
      }
    },
    "/v1/stocks/prints/large": {
      "get": {
        "description": "The large prints the platform captured for up to ten symbols on an exchange date, newest first, paged back in time with cursor_id. Only prints of at least $25,000 (or off-exchange prints of at least 1,000 shares) are retained, so smaller min_notional values do not reveal smaller prints; prior-session backfills keep prints of at least $250,000. venue separates lit exchanges from off-exchange facilities; flags mark odd lot, form T, average price, derivatively priced, prior reference price, late, intermarket sweep, contingent, official and corrected prints. Served from the platform's capture of equity prints: the tickers it captures are the always-on liquid ETFs plus tickers requested on demand (up to eight at a time, each for five minutes after the last request), so a symbol seen for the first time returns data only from the moment capture began; meta.coverage.captured_since says when. Use /v1/stocks/dark-pool/trades for the full tape of any symbol.",
        "operationId": "stocksPrintsLarge",
        "parameters": [
          {
            "description": "Comma-separated ticker symbols, at most 10. Defaults to SPY.",
            "explode": false,
            "in": "query",
            "name": "symbols",
            "required": false,
            "schema": {
              "items": {
                "maxLength": 11,
                "pattern": "^[A-Za-z]{1,6}(\\.[A-Za-z0-9]{1,4})?$",
                "type": "string"
              },
              "maxItems": 10,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Exchange date, YYYY-MM-DD. Defaults to the latest captured trading date.",
            "in": "query",
            "name": "date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "all (default), off_exchange or lit.",
            "in": "query",
            "name": "venue",
            "required": false,
            "schema": {
              "default": "all",
              "enum": [
                "all",
                "off_exchange",
                "lit"
              ],
              "type": "string"
            }
          },
          {
            "description": "Only prints of at least this dollar value.",
            "in": "query",
            "name": "min_notional",
            "required": false,
            "schema": {
              "maximum": 1000000000000000,
              "minimum": 0,
              "type": "number"
            }
          },
          {
            "description": "Only prints of at least this many shares.",
            "in": "query",
            "name": "min_size",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": 0,
              "type": "number"
            }
          },
          {
            "description": "Maximum rows to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 200,
              "maximum": 500,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Opaque cursor returned as pagination.next_cursor_id; resumes the same query on the next page.",
            "in": "query",
            "name": "cursor_id",
            "required": false,
            "schema": {
              "maxLength": 1024,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "conditions": [
                        12
                      ],
                      "exchange": 4,
                      "flags": [
                        "form_t"
                      ],
                      "notional": 3006000,
                      "off_exchange": true,
                      "participant_timestamp": 1792101600120,
                      "price": 601.2,
                      "size": 5000,
                      "symbol": "SPY",
                      "timestamp": 1792101600123,
                      "trade_id": "SPY-1x9k2m",
                      "trf_id": 201
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "sip"
                  },
                  "pagination": {
                    "count": 1,
                    "has_more": false,
                    "limit": 200,
                    "next_cursor_id": null,
                    "next_url": null
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/StocksPrintsLargeRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "required": [
                    "data",
                    "meta",
                    "pagination"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Large equity prints, lit and off-exchange, newest first.",
        "tags": [
          "stocks"
        ],
        "x-dataset": "equities",
        "x-history-params": [
          "date"
        ],
        "x-mcp": true,
        "x-paginated": true
      }
    },
    "/v1/stocks/quotes": {
      "get": {
        "description": "Every change of the national best bid and offer in a window, ascending by exchange time with the sequence number as the tie-break, resumed with cursor_id. A side with no quote is null. Quotes exist for exchanges only; off-exchange facilities do not quote. meta.delayed is true when the data is 15 minutes delayed.",
        "operationId": "stocksQuotes",
        "parameters": [
          {
            "description": "Ticker symbol, for example AAPL.",
            "in": "query",
            "name": "symbol",
            "required": true,
            "schema": {
              "maxLength": 11,
              "pattern": "^[A-Za-z]{1,6}(\\.[A-Za-z0-9]{1,4})?$",
              "type": "string"
            }
          },
          {
            "description": "Inclusive start of the window. Defaults to the start of the current exchange date.",
            "in": "query",
            "name": "start_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "Exclusive end of the window. Defaults to the end of the exchange date of start_time. At most 31 days after start_time.",
            "in": "query",
            "name": "end_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "A whole exchange date (YYYY-MM-DD, 00:00 to 24:00 Eastern, extended hours included) instead of start_time and end_time.",
            "in": "query",
            "name": "date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Maximum rows to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 1000,
              "maximum": 10000,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Opaque cursor returned as pagination.next_cursor_id; resumes the same query on the next page.",
            "in": "query",
            "name": "cursor_id",
            "required": false,
            "schema": {
              "maxLength": 1024,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "ask_exchange": 11,
                      "ask_price": 231.43,
                      "ask_size": 200,
                      "bid_exchange": 12,
                      "bid_price": 231.41,
                      "bid_size": 300,
                      "conditions": [
                        1
                      ],
                      "indicators": [
                        602
                      ],
                      "participant_timestamp": 1760659200120,
                      "sequence_number": 98211,
                      "symbol": "AAPL",
                      "tape": 3,
                      "timestamp": 1760659200123,
                      "timestamp_ns": "1760659200123456789",
                      "trf_timestamp": null
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "sip"
                  },
                  "pagination": {
                    "count": 1,
                    "has_more": false,
                    "limit": 1000,
                    "next_cursor_id": null,
                    "next_url": null
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/StocksQuotesRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "required": [
                    "data",
                    "meta",
                    "pagination"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Consolidated NBBO quotes of a stock, oldest first.",
        "tags": [
          "stocks"
        ],
        "x-dataset": "equities",
        "x-history-params": [
          "start_time",
          "end_time",
          "date"
        ],
        "x-paginated": true
      }
    },
    "/v1/stocks/related": {
      "get": {
        "description": "Symbols of companies related to the queried one, based on news co-mentions and return correlation.",
        "operationId": "stocksRelated",
        "parameters": [
          {
            "description": "Ticker symbol, for example AAPL.",
            "in": "query",
            "name": "symbol",
            "required": true,
            "schema": {
              "maxLength": 11,
              "pattern": "^[A-Za-z]{1,6}(\\.[A-Za-z0-9]{1,4})?$",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "related": [
                      "MSFT",
                      "GOOGL",
                      "AMZN",
                      "META"
                    ],
                    "symbol": "AAPL"
                  },
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "sip"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/StocksRelatedRow"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Companies related to a stock.",
        "tags": [
          "stocks"
        ],
        "x-dataset": "equities"
      }
    },
    "/v1/stocks/short-interest": {
      "get": {
        "description": "The number of shares sold short and not yet covered at each FINRA settlement date (reported twice a month), the average daily volume and the days to cover.",
        "operationId": "stocksShortInterest",
        "parameters": [
          {
            "description": "Ticker symbol, for example GME.",
            "in": "query",
            "name": "symbol",
            "required": true,
            "schema": {
              "maxLength": 11,
              "pattern": "^[A-Za-z]{1,6}(\\.[A-Za-z0-9]{1,4})?$",
              "type": "string"
            }
          },
          {
            "description": "Inclusive earliest settlement date, YYYY-MM-DD.",
            "in": "query",
            "name": "start_date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Inclusive latest settlement date, YYYY-MM-DD.",
            "in": "query",
            "name": "end_date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Maximum rows to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 100,
              "maximum": 1000,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Opaque cursor returned as pagination.next_cursor_id; resumes the same query on the next page.",
            "in": "query",
            "name": "cursor_id",
            "required": false,
            "schema": {
              "maxLength": 1024,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "avg_daily_volume": 4800000,
                      "days_to_cover": 2.75,
                      "settlement_date": "2026-09-30",
                      "short_interest": 13200000,
                      "symbol": "GME"
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "sip"
                  },
                  "pagination": {
                    "count": 1,
                    "has_more": false,
                    "limit": 100,
                    "next_cursor_id": null,
                    "next_url": null
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/StocksShortInterestRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "required": [
                    "data",
                    "meta",
                    "pagination"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Short interest settlements of a stock, newest first.",
        "tags": [
          "stocks"
        ],
        "x-dataset": "equities",
        "x-paginated": true
      }
    },
    "/v1/stocks/short-volume": {
      "get": {
        "description": "Shares sold short on each trading day against the total reported volume, with the exempt portion and the short volume reported through each FINRA trade reporting facility.",
        "operationId": "stocksShortVolume",
        "parameters": [
          {
            "description": "Ticker symbol, for example AAPL.",
            "in": "query",
            "name": "symbol",
            "required": true,
            "schema": {
              "maxLength": 11,
              "pattern": "^[A-Za-z]{1,6}(\\.[A-Za-z0-9]{1,4})?$",
              "type": "string"
            }
          },
          {
            "description": "Inclusive earliest trading date, YYYY-MM-DD.",
            "in": "query",
            "name": "start_date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Inclusive latest trading date, YYYY-MM-DD.",
            "in": "query",
            "name": "end_date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Maximum rows to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 100,
              "maximum": 1000,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Opaque cursor returned as pagination.next_cursor_id; resumes the same query on the next page.",
            "in": "query",
            "name": "cursor_id",
            "required": false,
            "schema": {
              "maxLength": 1024,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "date": "2026-10-14",
                      "exempt_volume": 120000,
                      "facilities": [
                        {
                          "facility": "finra_adf",
                          "short_volume": 310000,
                          "short_volume_exempt": 1200
                        }
                      ],
                      "non_exempt_volume": 18080000,
                      "short_volume": 18200000,
                      "short_volume_ratio": 44.4,
                      "symbol": "AAPL",
                      "total_volume": 41000000
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "sip"
                  },
                  "pagination": {
                    "count": 1,
                    "has_more": false,
                    "limit": 100,
                    "next_cursor_id": null,
                    "next_url": null
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/StocksShortVolumeRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "required": [
                    "data",
                    "meta",
                    "pagination"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Daily short sale volume of a stock, newest first.",
        "tags": [
          "stocks"
        ],
        "x-dataset": "equities",
        "x-paginated": true
      }
    },
    "/v1/stocks/snapshot": {
      "get": {
        "description": "For each symbol: the latest price, change against the previous close, today's and the previous day's bars, the latest minute bar, the last trade and the last NBBO quote. Prices that do not exist yet (before the first trade of the day) are null. Symbols that are unknown are listed in meta.coverage.missing_symbols. Cached for 2 seconds; meta.delayed is true when the data is 15 minutes delayed.",
        "operationId": "stocksSnapshot",
        "parameters": [
          {
            "description": "Comma-separated ticker symbols, at most 50.",
            "explode": false,
            "in": "query",
            "name": "symbols",
            "required": true,
            "schema": {
              "items": {
                "maxLength": 11,
                "pattern": "^[A-Za-z]{1,6}(\\.[A-Za-z0-9]{1,4})?$",
                "type": "string"
              },
              "maxItems": 50,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "change": 5.42,
                      "change_percent": 2.4,
                      "day": {
                        "close": 231.42,
                        "high": 232.3,
                        "low": 227.9,
                        "open": 228.1,
                        "volume": 41230000,
                        "vwap": 230.4
                      },
                      "last_quote": {
                        "ask_price": 231.43,
                        "ask_size": 2,
                        "bid_price": 231.41,
                        "bid_size": 3,
                        "timestamp": 1760659200120
                      },
                      "last_trade": {
                        "conditions": [
                          12,
                          37
                        ],
                        "exchange": 11,
                        "price": 231.42,
                        "size": 100,
                        "timestamp": 1760659200123,
                        "trade_id": "52983525029461"
                      },
                      "minute": {
                        "accumulated_volume": 41230000,
                        "close": 231.42,
                        "high": 231.5,
                        "low": 231.2,
                        "open": 231.3,
                        "start_time": 1760659140000,
                        "trades": 211,
                        "volume": 12000,
                        "vwap": 231.38
                      },
                      "prev_day": {
                        "close": 226,
                        "high": 227.2,
                        "low": 224.6,
                        "open": 225,
                        "volume": 39100000,
                        "vwap": 225.9
                      },
                      "price": 231.42,
                      "symbol": "AAPL",
                      "timestamp": 1760659200123
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "sip"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/StocksSnapshotRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Current-day snapshot of up to 50 stocks.",
        "tags": [
          "stocks"
        ],
        "x-dataset": "equities",
        "x-mcp": true,
        "x-streamable": true
      }
    },
    "/v1/stocks/snapshot/all": {
      "get": {
        "description": "The whole-market snapshot in symbol order, paged with cursor_id. min_volume keeps only stocks that have traded at least that many shares today. The market is read once every 2 seconds and shared by all callers, so paging through it is consistent and cheap.",
        "operationId": "stocksSnapshotAll",
        "parameters": [
          {
            "description": "Only stocks with at least this much volume today, in shares.",
            "in": "query",
            "name": "min_volume",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": 0,
              "type": "number"
            }
          },
          {
            "description": "Maximum rows to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 500,
              "maximum": 2500,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Opaque cursor returned as pagination.next_cursor_id; resumes the same query on the next page.",
            "in": "query",
            "name": "cursor_id",
            "required": false,
            "schema": {
              "maxLength": 1024,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "change": 5.42,
                      "change_percent": 2.4,
                      "day": {
                        "close": 231.42,
                        "high": 232.3,
                        "low": 227.9,
                        "open": 228.1,
                        "volume": 41230000,
                        "vwap": 230.4
                      },
                      "last_quote": {
                        "ask_price": 231.43,
                        "ask_size": 2,
                        "bid_price": 231.41,
                        "bid_size": 3,
                        "timestamp": 1760659200120
                      },
                      "last_trade": {
                        "conditions": [
                          12,
                          37
                        ],
                        "exchange": 11,
                        "price": 231.42,
                        "size": 100,
                        "timestamp": 1760659200123,
                        "trade_id": "52983525029461"
                      },
                      "minute": {
                        "accumulated_volume": 41230000,
                        "close": 231.42,
                        "high": 231.5,
                        "low": 231.2,
                        "open": 231.3,
                        "start_time": 1760659140000,
                        "trades": 211,
                        "volume": 12000,
                        "vwap": 231.38
                      },
                      "prev_day": {
                        "close": 226,
                        "high": 227.2,
                        "low": 224.6,
                        "open": 225,
                        "volume": 39100000,
                        "vwap": 225.9
                      },
                      "price": 231.42,
                      "symbol": "AAPL",
                      "timestamp": 1760659200123
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "sip"
                  },
                  "pagination": {
                    "count": 1,
                    "has_more": false,
                    "limit": 500,
                    "next_cursor_id": null,
                    "next_url": null
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/StocksSnapshotAllRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "required": [
                    "data",
                    "meta",
                    "pagination"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Current-day snapshot of every US stock.",
        "tags": [
          "stocks"
        ],
        "x-dataset": "equities",
        "x-paginated": true
      }
    },
    "/v1/stocks/splits": {
      "get": {
        "description": "Historical stock splits with the execution date and ratio. A 2-for-1 split has split_from 1 and split_to 2; type is forward, reverse or other.",
        "operationId": "stocksSplits",
        "parameters": [
          {
            "description": "Only this ticker symbol.",
            "in": "query",
            "name": "symbol",
            "required": false,
            "schema": {
              "maxLength": 11,
              "pattern": "^[A-Za-z]{1,6}(\\.[A-Za-z0-9]{1,4})?$",
              "type": "string"
            }
          },
          {
            "description": "Inclusive earliest execution date, YYYY-MM-DD.",
            "in": "query",
            "name": "start_date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Inclusive latest execution date, YYYY-MM-DD.",
            "in": "query",
            "name": "end_date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Maximum rows to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 100,
              "maximum": 999,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Opaque cursor returned as pagination.next_cursor_id; resumes the same query on the next page.",
            "in": "query",
            "name": "cursor_id",
            "required": false,
            "schema": {
              "maxLength": 1024,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "execution_date": "2024-06-10",
                      "id": "E36416cce743c3964c5da63e1ef1626c0aece30fb47302eea5afae8c3bd1fe49",
                      "split_from": 1,
                      "split_to": 10,
                      "symbol": "NVDA",
                      "type": "forward"
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "sip"
                  },
                  "pagination": {
                    "count": 1,
                    "has_more": false,
                    "limit": 100,
                    "next_cursor_id": null,
                    "next_url": null
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/StocksSplitsRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "required": [
                    "data",
                    "meta",
                    "pagination"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Stock splits, newest first.",
        "tags": [
          "stocks"
        ],
        "x-dataset": "equities",
        "x-paginated": true
      }
    },
    "/v1/stocks/ticker-details": {
      "get": {
        "description": "Describes the company behind a symbol: name, description, listing date, market capitalization, shares outstanding, industry classification (SIC code and text) with an approximate market sector, employees, headquarters and website. Market capitalization is the latest close times weighted shares outstanding and is refreshed daily.",
        "operationId": "stocksTickerDetails",
        "parameters": [
          {
            "description": "Ticker symbol, for example AAPL.",
            "in": "query",
            "name": "symbol",
            "required": true,
            "schema": {
              "maxLength": 11,
              "pattern": "^[A-Za-z]{1,6}(\\.[A-Za-z0-9]{1,4})?$",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "active": true,
                    "address": {
                      "address1": "One Apple Park Way",
                      "address2": null,
                      "city": "Cupertino",
                      "postal_code": "95014",
                      "state": "CA"
                    },
                    "cik": "0000320193",
                    "composite_figi": "BBG000B9XRY4",
                    "currency": "USD",
                    "delisted_timestamp": null,
                    "description": "Designs and sells consumer electronics, software and services.",
                    "homepage_url": "https://www.apple.com",
                    "list_date": "1980-12-12",
                    "locale": "us",
                    "market": "stocks",
                    "market_cap": 3500000000000,
                    "name": "Apple Inc.",
                    "phone_number": "(408) 996-1010",
                    "primary_exchange": "XNAS",
                    "round_lot": 100,
                    "sector": "Information Technology",
                    "share_class_figi": "BBG001S5N8V8",
                    "share_class_shares_outstanding": 14900000000,
                    "sic_code": "3571",
                    "sic_description": "ELECTRONIC COMPUTERS",
                    "symbol": "AAPL",
                    "ticker_root": "AAPL",
                    "ticker_suffix": null,
                    "total_employees": 164000,
                    "type": "CS",
                    "weighted_shares_outstanding": 14900000000
                  },
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "sip"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/StocksTickerDetailsRow"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Company details for a stock symbol.",
        "tags": [
          "stocks"
        ],
        "x-dataset": "equities",
        "x-mcp": true
      }
    },
    "/v1/stocks/ticker-events": {
      "get": {
        "description": "The timeline of events for the entity currently trading under a symbol. Today the timeline lists symbol changes (renames) with the date each took effect.",
        "operationId": "stocksTickerEvents",
        "parameters": [
          {
            "description": "Ticker symbol, for example META.",
            "in": "query",
            "name": "symbol",
            "required": true,
            "schema": {
              "maxLength": 11,
              "pattern": "^[A-Za-z]{1,6}(\\.[A-Za-z0-9]{1,4})?$",
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": {
                    "composite_figi": "BBG000MM2P62",
                    "events": [
                      {
                        "date": "2022-06-09",
                        "symbol": "META",
                        "type": "ticker_change"
                      }
                    ],
                    "name": "Meta Platforms, Inc.",
                    "symbol": "META"
                  },
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "sip"
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "$ref": "#/components/schemas/StocksTickerEventsRow"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    }
                  },
                  "required": [
                    "data",
                    "meta"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Symbol changes of the company behind a ticker.",
        "tags": [
          "stocks"
        ],
        "x-dataset": "equities"
      }
    },
    "/v1/stocks/tickers": {
      "get": {
        "description": "Lists US-listed securities in symbol order with their listing exchange, type, currency and identifiers. Use search to match a symbol or company name, type to restrict the kind of security and active=false to include delisted ones. Page with the returned cursor_id; the list is reference data refreshed daily.",
        "operationId": "stocksTickers",
        "parameters": [
          {
            "description": "Match text in the symbol or company name.",
            "in": "query",
            "name": "search",
            "required": false,
            "schema": {
              "maxLength": 80,
              "type": "string"
            }
          },
          {
            "description": "Security type: cs common stock, adrc depositary receipt, etf, etn, fund, pfd preferred, warrant, right, unit and others.",
            "in": "query",
            "name": "type",
            "required": false,
            "schema": {
              "enum": [
                "cs",
                "adrc",
                "adrp",
                "adrr",
                "unit",
                "right",
                "pfd",
                "fund",
                "sp",
                "warrant",
                "etf",
                "etn",
                "os",
                "gdr",
                "other",
                "nyrs",
                "agen",
                "eqlk",
                "bond",
                "adrw",
                "basket",
                "lt"
              ],
              "type": "string"
            }
          },
          {
            "description": "Primary listing exchange as a four letter market identifier code, for example XNAS or XNYS.",
            "in": "query",
            "name": "exchange",
            "required": false,
            "schema": {
              "maxLength": 4,
              "pattern": "^[A-Za-z]{4}$",
              "type": "string"
            }
          },
          {
            "description": "Only actively traded securities when true (the default); false lists delisted securities.",
            "in": "query",
            "name": "active",
            "required": false,
            "schema": {
              "default": true,
              "type": "boolean"
            }
          },
          {
            "description": "Market: stocks (exchange listed, the default) or otc.",
            "in": "query",
            "name": "market",
            "required": false,
            "schema": {
              "default": "stocks",
              "enum": [
                "stocks",
                "otc"
              ],
              "type": "string"
            }
          },
          {
            "description": "Maximum rows to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 100,
              "maximum": 999,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Opaque cursor returned as pagination.next_cursor_id; resumes the same query on the next page.",
            "in": "query",
            "name": "cursor_id",
            "required": false,
            "schema": {
              "maxLength": 1024,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "active": true,
                      "cik": "0000320193",
                      "composite_figi": "BBG000B9XRY4",
                      "currency": "USD",
                      "delisted_timestamp": null,
                      "locale": "us",
                      "market": "stocks",
                      "name": "Apple Inc.",
                      "primary_exchange": "XNAS",
                      "share_class_figi": "BBG001S5N8V8",
                      "symbol": "AAPL",
                      "type": "CS",
                      "updated_timestamp": 1760659200000
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "sip"
                  },
                  "pagination": {
                    "count": 1,
                    "has_more": false,
                    "limit": 100,
                    "next_cursor_id": null,
                    "next_url": null
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/StocksTickersRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "required": [
                    "data",
                    "meta",
                    "pagination"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Search and list tradable US securities.",
        "tags": [
          "stocks"
        ],
        "x-dataset": "equities",
        "x-paginated": true
      }
    },
    "/v1/stocks/trades": {
      "get": {
        "description": "Every consolidated trade of one stock in a window, ascending by exchange time with the sequence number as the tie-break, resumed with cursor_id. Timestamps are milliseconds with the exact nanosecond order key in timestamp_ns. Prints that were corrected or cancelled are excluded unless include_corrections=true. Filters run while the platform scans the tape, within a per-request budget of up to four pages of 50,000 trades: when the budget is spent before limit matches are found the page is short, meta.coverage.scan_complete is false and pagination still carries a cursor_id to continue the scan; meta.coverage.scanned_through says how far the scan reached. A page is complete when scan_complete is true. meta.delayed is true when the data is 15 minutes delayed; meta.source is sip.",
        "operationId": "stocksTrades",
        "parameters": [
          {
            "description": "Ticker symbol, for example AAPL.",
            "in": "query",
            "name": "symbol",
            "required": true,
            "schema": {
              "maxLength": 11,
              "pattern": "^[A-Za-z]{1,6}(\\.[A-Za-z0-9]{1,4})?$",
              "type": "string"
            }
          },
          {
            "description": "Inclusive start of the window. Defaults to the start of the current exchange date.",
            "in": "query",
            "name": "start_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "Exclusive end of the window. Defaults to the end of the exchange date of start_time. At most 31 days after start_time.",
            "in": "query",
            "name": "end_time",
            "required": false,
            "schema": {
              "format": "unix-ms",
              "maximum": 4102444800000,
              "minimum": 946684800000,
              "type": "integer"
            }
          },
          {
            "description": "A whole exchange date (YYYY-MM-DD, 00:00 to 24:00 Eastern, extended hours included) instead of start_time and end_time.",
            "in": "query",
            "name": "date",
            "required": false,
            "schema": {
              "format": "date",
              "type": "string"
            }
          },
          {
            "description": "Only trades reported by these exchange ids (comma-separated, at most 32); see /v1/stocks/exchanges.",
            "explode": false,
            "in": "query",
            "name": "exchange",
            "required": false,
            "schema": {
              "items": {
                "type": "integer"
              },
              "maxItems": 32,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "true keeps only off-exchange (dark pool) prints, false only lit venues.",
            "in": "query",
            "name": "off_exchange",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Only trades of at least this many shares.",
            "in": "query",
            "name": "min_size",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": 0,
              "type": "number"
            }
          },
          {
            "description": "Only trades of at least this dollar value (price times size).",
            "in": "query",
            "name": "min_notional",
            "required": false,
            "schema": {
              "maximum": 1000000000000000,
              "minimum": 0,
              "type": "number"
            }
          },
          {
            "description": "Only trades carrying any of these condition codes (comma-separated, at most 32).",
            "explode": false,
            "in": "query",
            "name": "conditions",
            "required": false,
            "schema": {
              "items": {
                "type": "integer"
              },
              "maxItems": 32,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Drop trades carrying any of these condition codes (comma-separated, at most 32).",
            "explode": false,
            "in": "query",
            "name": "exclude_conditions",
            "required": false,
            "schema": {
              "items": {
                "type": "integer"
              },
              "maxItems": 32,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Only prints received by these trade reporting facility ids, for example 202,203 (comma-separated, at most 16).",
            "explode": false,
            "in": "query",
            "name": "trf",
            "required": false,
            "schema": {
              "items": {
                "type": "integer"
              },
              "maxItems": 16,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Include prints that were later corrected or cancelled, flagged in correction (default false).",
            "in": "query",
            "name": "include_corrections",
            "required": false,
            "schema": {
              "type": "boolean"
            }
          },
          {
            "description": "Maximum rows to return.",
            "in": "query",
            "name": "limit",
            "required": false,
            "schema": {
              "default": 1000,
              "maximum": 10000,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Opaque cursor returned as pagination.next_cursor_id; resumes the same query on the next page.",
            "in": "query",
            "name": "cursor_id",
            "required": false,
            "schema": {
              "maxLength": 1024,
              "type": "string"
            }
          }
        ],
        "responses": {
          "200": {
            "content": {
              "application/json": {
                "example": {
                  "data": [
                    {
                      "conditions": [
                        12
                      ],
                      "correction": null,
                      "exchange": 4,
                      "notional": 2892750,
                      "off_exchange": true,
                      "participant_timestamp": 1760659200120,
                      "price": 231.42,
                      "sequence_number": 1563,
                      "size": 12500,
                      "symbol": "AAPL",
                      "tape": 3,
                      "timestamp": 1760659200123,
                      "timestamp_ns": "1760659200123456789",
                      "trade_id": "52983525029461",
                      "trf_id": 202,
                      "trf_timestamp": 1760659200121
                    }
                  ],
                  "meta": {
                    "as_of": 1760659200123,
                    "coverage": {
                      "complete": true
                    },
                    "delay_ms": 0,
                    "delayed": false,
                    "request_id": "0199f0c2-5a1e-7c3b-9d4e-2b6f8a1c3d5e",
                    "source": "sip"
                  },
                  "pagination": {
                    "count": 1,
                    "has_more": false,
                    "limit": 1000,
                    "next_cursor_id": null,
                    "next_url": null
                  }
                },
                "schema": {
                  "properties": {
                    "data": {
                      "items": {
                        "$ref": "#/components/schemas/StocksTradesRow"
                      },
                      "type": "array"
                    },
                    "meta": {
                      "$ref": "#/components/schemas/Meta"
                    },
                    "pagination": {
                      "$ref": "#/components/schemas/Pagination"
                    }
                  },
                  "required": [
                    "data",
                    "meta",
                    "pagination"
                  ],
                  "type": "object"
                }
              }
            },
            "description": "Successful response.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid, unknown or repeated parameters, or an invalid cursor."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan, dataset release or account state does not allow this request."
          },
          "422": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is valid but no data exists for it."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit, burst limit or cooldown; wait Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "500": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Internal error."
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Data temporarily unavailable; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "504": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request timed out."
          }
        },
        "summary": "Consolidated trades of a stock, oldest first.",
        "tags": [
          "stocks"
        ],
        "x-dataset": "equities",
        "x-history-params": [
          "start_time",
          "end_time",
          "date"
        ],
        "x-mcp": true,
        "x-paginated": true
      }
    },
    "/v1/ws/analytics": {
      "get": {
        "description": "Subscribe to any endpoint flagged streamable in GET /v1/catalog with the same query parameters as its REST route. Whenever the data of a subscribed endpoint changes the server sends its complete response (never a delta). Each subscription is refreshed at most once per the endpoint's minimum interval (interval_ms in the subscribed message). Client messages: {action: subscribe, id, route, params, interval_ms} and {action: unsubscribe, id}. The number of subscriptions is limited by the plan, and an account's subscriptions together may refresh at most 10 times a second (choose a longer interval_ms to fit more of them). Subscriptions to the same endpoint and parameters share one refresh. A paginated endpoint streams its first page: has_more is reported, next_cursor_id and next_url are null (page through REST). Under heavy load a refresh can be skipped and retried about one interval later, so a snapshot may arrive late; after several skipped refreshes in a row the server sends {type: status, state: degraded, reason: refresh_delayed, id}, and {state: live} when refreshes resume. Load never produces an error message.",
        "operationId": "wsAnalytics",
        "parameters": [
          {
            "description": "Required unless supplied as an ordermap.device.<id> subprotocol together with ordermap.v1. Generate one random identifier per client installation and persist it across event types, keys, projects and reconnects. Never send it in the URL.",
            "in": "header",
            "name": "X-OrderMap-Device-ID",
            "required": false,
            "schema": {
              "maxLength": 128,
              "minLength": 16,
              "pattern": "^[A-Za-z0-9_-]{16,128}$",
              "type": "string"
            }
          }
        ],
        "responses": {
          "101": {
            "description": "Switching protocols: WebSocket protocol ordermap.v1.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid handshake parameters or missing, malformed or conflicting persistent device identifier."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key (Authorization, X-API-Key or, from a browser, the ordermap.key. subprotocol)."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan has no streaming (streaming_not_in_plan), the dataset is not released, or the account is suspended."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "stream_connection_limit: the account is already connected on another device, or already has this event type open on the active device. The existing connection is preserved.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "426": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is not a WebSocket upgrade."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit or WebSocket cooldown.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "stream_unavailable: the stream is not enabled or its source is down; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          }
        },
        "summary": "Snapshots of streamable endpoints.",
        "tags": [
          "streaming"
        ],
        "x-dataset": "none",
        "x-event": "analytics"
      }
    },
    "/v1/ws/futures/bars": {
      "get": {
        "description": "The forming and closed one-minute bar of a product or dated contract, built from trades. A forming bar is sent at most 60 times a second; the closed bar (closed: true) is sent once, when the minute ends.",
        "operationId": "wsFuturesBars",
        "parameters": [
          {
            "description": "Required unless supplied as an ordermap.device.<id> subprotocol together with ordermap.v1. Generate one random identifier per client installation and persist it across event types, keys, projects and reconnects. Never send it in the URL.",
            "in": "header",
            "name": "X-OrderMap-Device-ID",
            "required": false,
            "schema": {
              "maxLength": 128,
              "minLength": 16,
              "pattern": "^[A-Za-z0-9_-]{16,128}$",
              "type": "string"
            }
          },
          {
            "description": "Symbols to subscribe to (up to 25).",
            "explode": false,
            "in": "query",
            "name": "symbols",
            "required": false,
            "schema": {
              "items": {
                "maxLength": 128,
                "pattern": "^[A-Za-z][A-Za-z0-9.]{0,9}$",
                "type": "string"
              },
              "maxItems": 25,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          }
        ],
        "responses": {
          "101": {
            "description": "Switching protocols: WebSocket protocol ordermap.v1.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid handshake parameters or missing, malformed or conflicting persistent device identifier."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key (Authorization, X-API-Key or, from a browser, the ordermap.key. subprotocol)."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan has no streaming (streaming_not_in_plan), the dataset is not released, or the account is suspended."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "stream_connection_limit: the account is already connected on another device, or already has this event type open on the active device. The existing connection is preserved.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "426": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is not a WebSocket upgrade."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit or WebSocket cooldown.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "stream_unavailable: the stream is not enabled or its source is down; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          }
        },
        "summary": "Futures one-minute bars.",
        "tags": [
          "streaming"
        ],
        "x-dataset": "futures",
        "x-event": "futures.bars"
      }
    },
    "/v1/ws/futures/depth": {
      "get": {
        "description": "The top ten price levels on each side whenever they change. Every event replaces the previous one, so the first event after subscribing is the initial snapshot. At most 10 symbols per connection.",
        "operationId": "wsFuturesDepth",
        "parameters": [
          {
            "description": "Required unless supplied as an ordermap.device.<id> subprotocol together with ordermap.v1. Generate one random identifier per client installation and persist it across event types, keys, projects and reconnects. Never send it in the URL.",
            "in": "header",
            "name": "X-OrderMap-Device-ID",
            "required": false,
            "schema": {
              "maxLength": 128,
              "minLength": 16,
              "pattern": "^[A-Za-z0-9_-]{16,128}$",
              "type": "string"
            }
          },
          {
            "description": "Symbols to subscribe to (up to 10).",
            "explode": false,
            "in": "query",
            "name": "symbols",
            "required": false,
            "schema": {
              "items": {
                "maxLength": 128,
                "pattern": "^[A-Za-z][A-Za-z0-9.]{0,9}$",
                "type": "string"
              },
              "maxItems": 10,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          }
        ],
        "responses": {
          "101": {
            "description": "Switching protocols: WebSocket protocol ordermap.v1.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid handshake parameters or missing, malformed or conflicting persistent device identifier."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key (Authorization, X-API-Key or, from a browser, the ordermap.key. subprotocol)."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan has no streaming (streaming_not_in_plan), the dataset is not released, or the account is suspended."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "stream_connection_limit: the account is already connected on another device, or already has this event type open on the active device. The existing connection is preserved.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "426": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is not a WebSocket upgrade."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit or WebSocket cooldown.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "stream_unavailable: the stream is not enabled or its source is down; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          }
        },
        "summary": "Futures market depth.",
        "tags": [
          "streaming"
        ],
        "x-dataset": "futures",
        "x-event": "futures.depth"
      }
    },
    "/v1/ws/futures/quotes": {
      "get": {
        "description": "Every change of the best bid and offer of a product or dated contract. The first event after subscribing is the current quote.",
        "operationId": "wsFuturesQuotes",
        "parameters": [
          {
            "description": "Required unless supplied as an ordermap.device.<id> subprotocol together with ordermap.v1. Generate one random identifier per client installation and persist it across event types, keys, projects and reconnects. Never send it in the URL.",
            "in": "header",
            "name": "X-OrderMap-Device-ID",
            "required": false,
            "schema": {
              "maxLength": 128,
              "minLength": 16,
              "pattern": "^[A-Za-z0-9_-]{16,128}$",
              "type": "string"
            }
          },
          {
            "description": "Symbols to subscribe to (up to 25).",
            "explode": false,
            "in": "query",
            "name": "symbols",
            "required": false,
            "schema": {
              "items": {
                "maxLength": 128,
                "pattern": "^[A-Za-z][A-Za-z0-9.]{0,9}$",
                "type": "string"
              },
              "maxItems": 25,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          }
        ],
        "responses": {
          "101": {
            "description": "Switching protocols: WebSocket protocol ordermap.v1.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid handshake parameters or missing, malformed or conflicting persistent device identifier."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key (Authorization, X-API-Key or, from a browser, the ordermap.key. subprotocol)."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan has no streaming (streaming_not_in_plan), the dataset is not released, or the account is suspended."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "stream_connection_limit: the account is already connected on another device, or already has this event type open on the active device. The existing connection is preserved.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "426": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is not a WebSocket upgrade."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit or WebSocket cooldown.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "stream_unavailable: the stream is not enabled or its source is down; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          }
        },
        "summary": "Futures best bid and offer.",
        "tags": [
          "streaming"
        ],
        "x-dataset": "futures",
        "x-event": "futures.quotes"
      }
    },
    "/v1/ws/futures/trades": {
      "get": {
        "description": "One event per trade of a product (ES) or a dated contract (ESZ6), with the price as a decimal and in ticks. A product selects its front contract.",
        "operationId": "wsFuturesTrades",
        "parameters": [
          {
            "description": "Required unless supplied as an ordermap.device.<id> subprotocol together with ordermap.v1. Generate one random identifier per client installation and persist it across event types, keys, projects and reconnects. Never send it in the URL.",
            "in": "header",
            "name": "X-OrderMap-Device-ID",
            "required": false,
            "schema": {
              "maxLength": 128,
              "minLength": 16,
              "pattern": "^[A-Za-z0-9_-]{16,128}$",
              "type": "string"
            }
          },
          {
            "description": "Symbols to subscribe to (up to 25).",
            "explode": false,
            "in": "query",
            "name": "symbols",
            "required": false,
            "schema": {
              "items": {
                "maxLength": 128,
                "pattern": "^[A-Za-z][A-Za-z0-9.]{0,9}$",
                "type": "string"
              },
              "maxItems": 25,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Minimum size in contracts.",
            "in": "query",
            "name": "min_size",
            "required": false,
            "schema": {
              "maximum": 1000000000,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Only these aggressor sides.",
            "explode": false,
            "in": "query",
            "name": "side",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "buy",
                  "sell",
                  "unknown"
                ],
                "type": "string"
              },
              "maxItems": 3,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          }
        ],
        "responses": {
          "101": {
            "description": "Switching protocols: WebSocket protocol ordermap.v1.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid handshake parameters or missing, malformed or conflicting persistent device identifier."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key (Authorization, X-API-Key or, from a browser, the ordermap.key. subprotocol)."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan has no streaming (streaming_not_in_plan), the dataset is not released, or the account is suspended."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "stream_connection_limit: the account is already connected on another device, or already has this event type open on the active device. The existing connection is preserved.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "426": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is not a WebSocket upgrade."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit or WebSocket cooldown.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "stream_unavailable: the stream is not enabled or its source is down; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          }
        },
        "summary": "Futures trades.",
        "tags": [
          "streaming"
        ],
        "x-dataset": "futures",
        "x-event": "futures.trades"
      }
    },
    "/v1/ws/indices/basis": {
      "get": {
        "description": "The relation between a cash index and its futures: fair value, the futures-implied index price, basis, premium and a state (index_above_implied, index_below_implied, at_fair). An update is sent on every change, at most 60 per second per index; whenever the state changes an extra event with kind crossing follows. Only available while the cash index is live.",
        "operationId": "wsIndicesBasis",
        "parameters": [
          {
            "description": "Required unless supplied as an ordermap.device.<id> subprotocol together with ordermap.v1. Generate one random identifier per client installation and persist it across event types, keys, projects and reconnects. Never send it in the URL.",
            "in": "header",
            "name": "X-OrderMap-Device-ID",
            "required": false,
            "schema": {
              "maxLength": 128,
              "minLength": 16,
              "pattern": "^[A-Za-z0-9_-]{16,128}$",
              "type": "string"
            }
          },
          {
            "description": "Symbols to subscribe to (up to 10).",
            "explode": false,
            "in": "query",
            "name": "symbols",
            "required": false,
            "schema": {
              "items": {
                "maxLength": 128,
                "pattern": "^[A-Za-z][A-Za-z0-9.]{0,9}$",
                "type": "string"
              },
              "maxItems": 10,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          }
        ],
        "responses": {
          "101": {
            "description": "Switching protocols: WebSocket protocol ordermap.v1.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid handshake parameters or missing, malformed or conflicting persistent device identifier."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key (Authorization, X-API-Key or, from a browser, the ordermap.key. subprotocol)."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan has no streaming (streaming_not_in_plan), the dataset is not released, or the account is suspended."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "stream_connection_limit: the account is already connected on another device, or already has this event type open on the active device. The existing connection is preserved.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "426": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is not a WebSocket upgrade."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit or WebSocket cooldown.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "stream_unavailable: the stream is not enabled or its source is down; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          }
        },
        "summary": "Index versus futures-implied value.",
        "tags": [
          "streaming"
        ],
        "x-dataset": "indices",
        "x-event": "indices.basis"
      }
    },
    "/v1/ws/indices/values": {
      "get": {
        "description": "Every value of a cash index (SPX, NDX, VIX, …), at most 60 per second per index. The first event after subscribing is the latest value.",
        "operationId": "wsIndicesValues",
        "parameters": [
          {
            "description": "Required unless supplied as an ordermap.device.<id> subprotocol together with ordermap.v1. Generate one random identifier per client installation and persist it across event types, keys, projects and reconnects. Never send it in the URL.",
            "in": "header",
            "name": "X-OrderMap-Device-ID",
            "required": false,
            "schema": {
              "maxLength": 128,
              "minLength": 16,
              "pattern": "^[A-Za-z0-9_-]{16,128}$",
              "type": "string"
            }
          },
          {
            "description": "Symbols to subscribe to (up to 100).",
            "explode": false,
            "in": "query",
            "name": "symbols",
            "required": false,
            "schema": {
              "items": {
                "maxLength": 128,
                "pattern": "^[A-Za-z][A-Za-z0-9.]{0,9}$",
                "type": "string"
              },
              "maxItems": 100,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          }
        ],
        "responses": {
          "101": {
            "description": "Switching protocols: WebSocket protocol ordermap.v1.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid handshake parameters or missing, malformed or conflicting persistent device identifier."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key (Authorization, X-API-Key or, from a browser, the ordermap.key. subprotocol)."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan has no streaming (streaming_not_in_plan), the dataset is not released, or the account is suspended."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "stream_connection_limit: the account is already connected on another device, or already has this event type open on the active device. The existing connection is preserved.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "426": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is not a WebSocket upgrade."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit or WebSocket cooldown.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "stream_unavailable: the stream is not enabled or its source is down; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          }
        },
        "summary": "Cash index values.",
        "tags": [
          "streaming"
        ],
        "x-dataset": "indices",
        "x-event": "indices.values"
      }
    },
    "/v1/ws/options/flow": {
      "get": {
        "description": "Finalized consolidated trades: sweeps and splits (several prints of one contract close together) and block prints. Subscribe by option root (SPX also selects SPXW). Every event is a finalized group (or a single block or unusual print); it is sent the moment the group closes.",
        "operationId": "wsOptionsFlow",
        "parameters": [
          {
            "description": "Required unless supplied as an ordermap.device.<id> subprotocol together with ordermap.v1. Generate one random identifier per client installation and persist it across event types, keys, projects and reconnects. Never send it in the URL.",
            "in": "header",
            "name": "X-OrderMap-Device-ID",
            "required": false,
            "schema": {
              "maxLength": 128,
              "minLength": 16,
              "pattern": "^[A-Za-z0-9_-]{16,128}$",
              "type": "string"
            }
          },
          {
            "description": "Symbols to subscribe to (up to 100).",
            "explode": false,
            "in": "query",
            "name": "symbols",
            "required": false,
            "schema": {
              "items": {
                "maxLength": 128,
                "pattern": "^[A-Za-z][A-Za-z0-9.]{0,9}$",
                "type": "string"
              },
              "maxItems": 100,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Only calls or only puts.",
            "in": "query",
            "name": "contract_type",
            "required": false,
            "schema": {
              "enum": [
                "call",
                "put"
              ],
              "type": "string"
            }
          },
          {
            "description": "Only orders on these sides of the quote (the classes of GET /v1/options/flow: ask is at or near the ask, bid at or near the bid).",
            "explode": false,
            "in": "query",
            "name": "side",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "above_ask",
                  "ask",
                  "mid",
                  "bid",
                  "below_bid",
                  "unknown"
                ],
                "type": "string"
              },
              "maxItems": 6,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Minimum size in contracts.",
            "in": "query",
            "name": "min_size",
            "required": false,
            "schema": {
              "maximum": 1000000000,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Minimum premium in dollars.",
            "in": "query",
            "name": "min_premium",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": 0,
              "type": "number"
            }
          },
          {
            "description": "Maximum premium in dollars.",
            "in": "query",
            "name": "max_premium",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": 0,
              "type": "number"
            }
          },
          {
            "description": "Only these consolidated trade types.",
            "explode": false,
            "in": "query",
            "name": "trade_type",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "sweep",
                  "block",
                  "split",
                  "single",
                  "golden"
                ],
                "type": "string"
              },
              "maxItems": 5,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Only this sentiment.",
            "explode": false,
            "in": "query",
            "name": "sentiment",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "bullish",
                  "bearish",
                  "neutral",
                  "unknown"
                ],
                "type": "string"
              },
              "maxItems": 4,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Minimum days to expiry.",
            "in": "query",
            "name": "min_dte",
            "required": false,
            "schema": {
              "maximum": 3650,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Maximum days to expiry.",
            "in": "query",
            "name": "max_dte",
            "required": false,
            "schema": {
              "maximum": 3650,
              "minimum": 0,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "101": {
            "description": "Switching protocols: WebSocket protocol ordermap.v1.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid handshake parameters or missing, malformed or conflicting persistent device identifier."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key (Authorization, X-API-Key or, from a browser, the ordermap.key. subprotocol)."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan has no streaming (streaming_not_in_plan), the dataset is not released, or the account is suspended."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "stream_connection_limit: the account is already connected on another device, or already has this event type open on the active device. The existing connection is preserved.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "426": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is not a WebSocket upgrade."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit or WebSocket cooldown.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "stream_unavailable: the stream is not enabled or its source is down; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          }
        },
        "summary": "Consolidated sweeps, splits and blocks.",
        "tags": [
          "streaming"
        ],
        "x-dataset": "options",
        "x-event": "options.flow"
      }
    },
    "/v1/ws/options/trades": {
      "get": {
        "description": "One event per print, with the quote at the print, the side classification and the contract's implied volatility and delta, delivered the moment the print is classified: no batching, no hold-back of sweep legs. Subscribe by option root (SPX also selects SPXW; use the root to select one) or with * for every print. A cancelled print is not retracted: cancels are not sent on the stream, so a print that is cancelled later stays delivered; reconcile through the REST trades endpoint, which leaves cancelled prints out.",
        "operationId": "wsOptionsTrades",
        "parameters": [
          {
            "description": "Required unless supplied as an ordermap.device.<id> subprotocol together with ordermap.v1. Generate one random identifier per client installation and persist it across event types, keys, projects and reconnects. Never send it in the URL.",
            "in": "header",
            "name": "X-OrderMap-Device-ID",
            "required": false,
            "schema": {
              "maxLength": 128,
              "minLength": 16,
              "pattern": "^[A-Za-z0-9_-]{16,128}$",
              "type": "string"
            }
          },
          {
            "description": "Symbols to subscribe to (up to 100). * subscribes to every symbol.",
            "explode": false,
            "in": "query",
            "name": "symbols",
            "required": false,
            "schema": {
              "items": {
                "maxLength": 128,
                "pattern": "^(\\*|[A-Za-z][A-Za-z0-9.]{0,9})$",
                "type": "string"
              },
              "maxItems": 100,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Only calls or only puts.",
            "in": "query",
            "name": "contract_type",
            "required": false,
            "schema": {
              "enum": [
                "call",
                "put"
              ],
              "type": "string"
            }
          },
          {
            "description": "Only prints classified on these sides of the quote.",
            "explode": false,
            "in": "query",
            "name": "side",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "above_ask",
                  "at_ask",
                  "near_ask",
                  "mid",
                  "near_bid",
                  "at_bid",
                  "below_bid",
                  "unknown"
                ],
                "type": "string"
              },
              "maxItems": 8,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Minimum size in contracts.",
            "in": "query",
            "name": "min_size",
            "required": false,
            "schema": {
              "maximum": 1000000000,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Minimum premium in dollars.",
            "in": "query",
            "name": "min_premium",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": 0,
              "type": "number"
            }
          },
          {
            "description": "Maximum premium in dollars.",
            "in": "query",
            "name": "max_premium",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": 0,
              "type": "number"
            }
          }
        ],
        "responses": {
          "101": {
            "description": "Switching protocols: WebSocket protocol ordermap.v1.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid handshake parameters or missing, malformed or conflicting persistent device identifier."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key (Authorization, X-API-Key or, from a browser, the ordermap.key. subprotocol)."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan has no streaming (streaming_not_in_plan), the dataset is not released, or the account is suspended."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "stream_connection_limit: the account is already connected on another device, or already has this event type open on the active device. The existing connection is preserved.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "426": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is not a WebSocket upgrade."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit or WebSocket cooldown.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "stream_unavailable: the stream is not enabled or its source is down; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          }
        },
        "summary": "Every classified option print.",
        "tags": [
          "streaming"
        ],
        "x-dataset": "options",
        "x-event": "options.trades"
      }
    },
    "/v1/ws/options/unusual": {
      "get": {
        "description": "Prints and consolidated trades that meet the unusual-activity rule: volume above open interest within 45 days of expiry, premium of at least $250,000, or an out-of-the-money buy sweep. Subscribe by option root (SPX also selects SPXW). Every event is a finalized group (or a single block or unusual print); it is sent the moment the group closes.",
        "operationId": "wsOptionsUnusual",
        "parameters": [
          {
            "description": "Required unless supplied as an ordermap.device.<id> subprotocol together with ordermap.v1. Generate one random identifier per client installation and persist it across event types, keys, projects and reconnects. Never send it in the URL.",
            "in": "header",
            "name": "X-OrderMap-Device-ID",
            "required": false,
            "schema": {
              "maxLength": 128,
              "minLength": 16,
              "pattern": "^[A-Za-z0-9_-]{16,128}$",
              "type": "string"
            }
          },
          {
            "description": "Symbols to subscribe to (up to 100).",
            "explode": false,
            "in": "query",
            "name": "symbols",
            "required": false,
            "schema": {
              "items": {
                "maxLength": 128,
                "pattern": "^[A-Za-z][A-Za-z0-9.]{0,9}$",
                "type": "string"
              },
              "maxItems": 100,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Only calls or only puts.",
            "in": "query",
            "name": "contract_type",
            "required": false,
            "schema": {
              "enum": [
                "call",
                "put"
              ],
              "type": "string"
            }
          },
          {
            "description": "Only orders on these sides of the quote (the classes of GET /v1/options/flow: ask is at or near the ask, bid at or near the bid).",
            "explode": false,
            "in": "query",
            "name": "side",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "above_ask",
                  "ask",
                  "mid",
                  "bid",
                  "below_bid",
                  "unknown"
                ],
                "type": "string"
              },
              "maxItems": 6,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Minimum size in contracts.",
            "in": "query",
            "name": "min_size",
            "required": false,
            "schema": {
              "maximum": 1000000000,
              "minimum": 1,
              "type": "integer"
            }
          },
          {
            "description": "Minimum premium in dollars.",
            "in": "query",
            "name": "min_premium",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": 0,
              "type": "number"
            }
          },
          {
            "description": "Maximum premium in dollars.",
            "in": "query",
            "name": "max_premium",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": 0,
              "type": "number"
            }
          },
          {
            "description": "Only these consolidated trade types.",
            "explode": false,
            "in": "query",
            "name": "trade_type",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "sweep",
                  "block",
                  "split",
                  "single",
                  "golden"
                ],
                "type": "string"
              },
              "maxItems": 5,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Only this sentiment.",
            "explode": false,
            "in": "query",
            "name": "sentiment",
            "required": false,
            "schema": {
              "items": {
                "enum": [
                  "bullish",
                  "bearish",
                  "neutral",
                  "unknown"
                ],
                "type": "string"
              },
              "maxItems": 4,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Minimum days to expiry.",
            "in": "query",
            "name": "min_dte",
            "required": false,
            "schema": {
              "maximum": 3650,
              "minimum": 0,
              "type": "integer"
            }
          },
          {
            "description": "Maximum days to expiry.",
            "in": "query",
            "name": "max_dte",
            "required": false,
            "schema": {
              "maximum": 3650,
              "minimum": 0,
              "type": "integer"
            }
          }
        ],
        "responses": {
          "101": {
            "description": "Switching protocols: WebSocket protocol ordermap.v1.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid handshake parameters or missing, malformed or conflicting persistent device identifier."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key (Authorization, X-API-Key or, from a browser, the ordermap.key. subprotocol)."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan has no streaming (streaming_not_in_plan), the dataset is not released, or the account is suspended."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "stream_connection_limit: the account is already connected on another device, or already has this event type open on the active device. The existing connection is preserved.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "426": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is not a WebSocket upgrade."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit or WebSocket cooldown.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "stream_unavailable: the stream is not enabled or its source is down; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          }
        },
        "summary": "Unusual option activity.",
        "tags": [
          "streaming"
        ],
        "x-dataset": "options",
        "x-event": "options.unusual"
      }
    },
    "/v1/ws/stocks/bars": {
      "get": {
        "description": "One event per second bar and per minute bar of a stock.",
        "operationId": "wsStocksBars",
        "parameters": [
          {
            "description": "Required unless supplied as an ordermap.device.<id> subprotocol together with ordermap.v1. Generate one random identifier per client installation and persist it across event types, keys, projects and reconnects. Never send it in the URL.",
            "in": "header",
            "name": "X-OrderMap-Device-ID",
            "required": false,
            "schema": {
              "maxLength": 128,
              "minLength": 16,
              "pattern": "^[A-Za-z0-9_-]{16,128}$",
              "type": "string"
            }
          },
          {
            "description": "Symbols to subscribe to (up to 100).",
            "explode": false,
            "in": "query",
            "name": "symbols",
            "required": false,
            "schema": {
              "items": {
                "maxLength": 128,
                "pattern": "^[A-Za-z][A-Za-z0-9.]{0,9}$",
                "type": "string"
              },
              "maxItems": 100,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Only this bar size.",
            "in": "query",
            "name": "interval",
            "required": false,
            "schema": {
              "enum": [
                "1s",
                "1m"
              ],
              "type": "string"
            }
          }
        ],
        "responses": {
          "101": {
            "description": "Switching protocols: WebSocket protocol ordermap.v1.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid handshake parameters or missing, malformed or conflicting persistent device identifier."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key (Authorization, X-API-Key or, from a browser, the ordermap.key. subprotocol)."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan has no streaming (streaming_not_in_plan), the dataset is not released, or the account is suspended."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "stream_connection_limit: the account is already connected on another device, or already has this event type open on the active device. The existing connection is preserved.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "426": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is not a WebSocket upgrade."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit or WebSocket cooldown.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "stream_unavailable: the stream is not enabled or its source is down; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          }
        },
        "summary": "Stock second and minute bars.",
        "tags": [
          "streaming"
        ],
        "x-dataset": "equities",
        "x-event": "stocks.bars"
      }
    },
    "/v1/ws/stocks/blocks": {
      "get": {
        "description": "Trades whose notional value reaches the block threshold. Subscribe by symbol.",
        "operationId": "wsStocksBlocks",
        "parameters": [
          {
            "description": "Required unless supplied as an ordermap.device.<id> subprotocol together with ordermap.v1. Generate one random identifier per client installation and persist it across event types, keys, projects and reconnects. Never send it in the URL.",
            "in": "header",
            "name": "X-OrderMap-Device-ID",
            "required": false,
            "schema": {
              "maxLength": 128,
              "minLength": 16,
              "pattern": "^[A-Za-z0-9_-]{16,128}$",
              "type": "string"
            }
          },
          {
            "description": "Symbols to subscribe to (up to 100).",
            "explode": false,
            "in": "query",
            "name": "symbols",
            "required": false,
            "schema": {
              "items": {
                "maxLength": 128,
                "pattern": "^[A-Za-z][A-Za-z0-9.]{0,9}$",
                "type": "string"
              },
              "maxItems": 100,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Minimum size in shares.",
            "in": "query",
            "name": "min_size",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": 0,
              "type": "number"
            }
          },
          {
            "description": "Minimum notional value in dollars.",
            "in": "query",
            "name": "min_notional",
            "required": false,
            "schema": {
              "maximum": 1000000000000000,
              "minimum": 0,
              "type": "number"
            }
          }
        ],
        "responses": {
          "101": {
            "description": "Switching protocols: WebSocket protocol ordermap.v1.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid handshake parameters or missing, malformed or conflicting persistent device identifier."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key (Authorization, X-API-Key or, from a browser, the ordermap.key. subprotocol)."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan has no streaming (streaming_not_in_plan), the dataset is not released, or the account is suspended."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "stream_connection_limit: the account is already connected on another device, or already has this event type open on the active device. The existing connection is preserved.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "426": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is not a WebSocket upgrade."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit or WebSocket cooldown.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "stream_unavailable: the stream is not enabled or its source is down; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          }
        },
        "summary": "Large stock trades.",
        "tags": [
          "streaming"
        ],
        "x-dataset": "equities",
        "x-event": "stocks.blocks"
      }
    },
    "/v1/ws/stocks/dark-pool": {
      "get": {
        "description": "Every trade reported by a trade reporting facility (off-exchange). Subscribe by symbol.",
        "operationId": "wsStocksDarkPool",
        "parameters": [
          {
            "description": "Required unless supplied as an ordermap.device.<id> subprotocol together with ordermap.v1. Generate one random identifier per client installation and persist it across event types, keys, projects and reconnects. Never send it in the URL.",
            "in": "header",
            "name": "X-OrderMap-Device-ID",
            "required": false,
            "schema": {
              "maxLength": 128,
              "minLength": 16,
              "pattern": "^[A-Za-z0-9_-]{16,128}$",
              "type": "string"
            }
          },
          {
            "description": "Symbols to subscribe to (up to 100).",
            "explode": false,
            "in": "query",
            "name": "symbols",
            "required": false,
            "schema": {
              "items": {
                "maxLength": 128,
                "pattern": "^[A-Za-z][A-Za-z0-9.]{0,9}$",
                "type": "string"
              },
              "maxItems": 100,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Minimum size in shares.",
            "in": "query",
            "name": "min_size",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": 0,
              "type": "number"
            }
          },
          {
            "description": "Minimum notional value in dollars.",
            "in": "query",
            "name": "min_notional",
            "required": false,
            "schema": {
              "maximum": 1000000000000000,
              "minimum": 0,
              "type": "number"
            }
          }
        ],
        "responses": {
          "101": {
            "description": "Switching protocols: WebSocket protocol ordermap.v1.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid handshake parameters or missing, malformed or conflicting persistent device identifier."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key (Authorization, X-API-Key or, from a browser, the ordermap.key. subprotocol)."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan has no streaming (streaming_not_in_plan), the dataset is not released, or the account is suspended."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "stream_connection_limit: the account is already connected on another device, or already has this event type open on the active device. The existing connection is preserved.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "426": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is not a WebSocket upgrade."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit or WebSocket cooldown.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "stream_unavailable: the stream is not enabled or its source is down; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          }
        },
        "summary": "Off-exchange stock trades.",
        "tags": [
          "streaming"
        ],
        "x-dataset": "equities",
        "x-event": "stocks.dark_pool"
      }
    },
    "/v1/ws/stocks/imbalances": {
      "get": {
        "description": "Opening, closing and halt-resumption auction imbalances of exchange-listed stocks. Subscribe by symbol or with * for every auction.",
        "operationId": "wsStocksImbalances",
        "parameters": [
          {
            "description": "Required unless supplied as an ordermap.device.<id> subprotocol together with ordermap.v1. Generate one random identifier per client installation and persist it across event types, keys, projects and reconnects. Never send it in the URL.",
            "in": "header",
            "name": "X-OrderMap-Device-ID",
            "required": false,
            "schema": {
              "maxLength": 128,
              "minLength": 16,
              "pattern": "^[A-Za-z0-9_-]{16,128}$",
              "type": "string"
            }
          },
          {
            "description": "Symbols to subscribe to (up to 100). * subscribes to every symbol.",
            "explode": false,
            "in": "query",
            "name": "symbols",
            "required": false,
            "schema": {
              "items": {
                "maxLength": 128,
                "pattern": "^(\\*|[A-Za-z][A-Za-z0-9.]{0,9})$",
                "type": "string"
              },
              "maxItems": 100,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          }
        ],
        "responses": {
          "101": {
            "description": "Switching protocols: WebSocket protocol ordermap.v1.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid handshake parameters or missing, malformed or conflicting persistent device identifier."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key (Authorization, X-API-Key or, from a browser, the ordermap.key. subprotocol)."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan has no streaming (streaming_not_in_plan), the dataset is not released, or the account is suspended."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "stream_connection_limit: the account is already connected on another device, or already has this event type open on the active device. The existing connection is preserved.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "426": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is not a WebSocket upgrade."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit or WebSocket cooldown.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "stream_unavailable: the stream is not enabled or its source is down; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          }
        },
        "summary": "Exchange auction imbalances.",
        "tags": [
          "streaming"
        ],
        "x-dataset": "equities",
        "x-event": "stocks.imbalances"
      }
    },
    "/v1/ws/stocks/luld": {
      "get": {
        "description": "Every update of a stock's price bands, and trading pauses and resumptions.",
        "operationId": "wsStocksLuld",
        "parameters": [
          {
            "description": "Required unless supplied as an ordermap.device.<id> subprotocol together with ordermap.v1. Generate one random identifier per client installation and persist it across event types, keys, projects and reconnects. Never send it in the URL.",
            "in": "header",
            "name": "X-OrderMap-Device-ID",
            "required": false,
            "schema": {
              "maxLength": 128,
              "minLength": 16,
              "pattern": "^[A-Za-z0-9_-]{16,128}$",
              "type": "string"
            }
          },
          {
            "description": "Symbols to subscribe to (up to 100).",
            "explode": false,
            "in": "query",
            "name": "symbols",
            "required": false,
            "schema": {
              "items": {
                "maxLength": 128,
                "pattern": "^[A-Za-z][A-Za-z0-9.]{0,9}$",
                "type": "string"
              },
              "maxItems": 100,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          }
        ],
        "responses": {
          "101": {
            "description": "Switching protocols: WebSocket protocol ordermap.v1.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid handshake parameters or missing, malformed or conflicting persistent device identifier."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key (Authorization, X-API-Key or, from a browser, the ordermap.key. subprotocol)."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan has no streaming (streaming_not_in_plan), the dataset is not released, or the account is suspended."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "stream_connection_limit: the account is already connected on another device, or already has this event type open on the active device. The existing connection is preserved.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "426": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is not a WebSocket upgrade."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit or WebSocket cooldown.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "stream_unavailable: the stream is not enabled or its source is down; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          }
        },
        "summary": "Limit up-limit down bands and halts.",
        "tags": [
          "streaming"
        ],
        "x-dataset": "equities",
        "x-event": "stocks.luld"
      }
    },
    "/v1/ws/stocks/quotes": {
      "get": {
        "description": "Every change of the national best bid and offer of a stock.",
        "operationId": "wsStocksQuotes",
        "parameters": [
          {
            "description": "Required unless supplied as an ordermap.device.<id> subprotocol together with ordermap.v1. Generate one random identifier per client installation and persist it across event types, keys, projects and reconnects. Never send it in the URL.",
            "in": "header",
            "name": "X-OrderMap-Device-ID",
            "required": false,
            "schema": {
              "maxLength": 128,
              "minLength": 16,
              "pattern": "^[A-Za-z0-9_-]{16,128}$",
              "type": "string"
            }
          },
          {
            "description": "Symbols to subscribe to (up to 100).",
            "explode": false,
            "in": "query",
            "name": "symbols",
            "required": false,
            "schema": {
              "items": {
                "maxLength": 128,
                "pattern": "^[A-Za-z][A-Za-z0-9.]{0,9}$",
                "type": "string"
              },
              "maxItems": 100,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          }
        ],
        "responses": {
          "101": {
            "description": "Switching protocols: WebSocket protocol ordermap.v1.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid handshake parameters or missing, malformed or conflicting persistent device identifier."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key (Authorization, X-API-Key or, from a browser, the ordermap.key. subprotocol)."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan has no streaming (streaming_not_in_plan), the dataset is not released, or the account is suspended."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "stream_connection_limit: the account is already connected on another device, or already has this event type open on the active device. The existing connection is preserved.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "426": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is not a WebSocket upgrade."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit or WebSocket cooldown.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "stream_unavailable: the stream is not enabled or its source is down; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          }
        },
        "summary": "Stock national best bid and offer.",
        "tags": [
          "streaming"
        ],
        "x-dataset": "equities",
        "x-event": "stocks.quotes"
      }
    },
    "/v1/ws/stocks/trades": {
      "get": {
        "description": "Every consolidated trade of a stock. Cancels and corrections do not appear on the stream.",
        "operationId": "wsStocksTrades",
        "parameters": [
          {
            "description": "Required unless supplied as an ordermap.device.<id> subprotocol together with ordermap.v1. Generate one random identifier per client installation and persist it across event types, keys, projects and reconnects. Never send it in the URL.",
            "in": "header",
            "name": "X-OrderMap-Device-ID",
            "required": false,
            "schema": {
              "maxLength": 128,
              "minLength": 16,
              "pattern": "^[A-Za-z0-9_-]{16,128}$",
              "type": "string"
            }
          },
          {
            "description": "Symbols to subscribe to (up to 100).",
            "explode": false,
            "in": "query",
            "name": "symbols",
            "required": false,
            "schema": {
              "items": {
                "maxLength": 128,
                "pattern": "^[A-Za-z][A-Za-z0-9.]{0,9}$",
                "type": "string"
              },
              "maxItems": 100,
              "minItems": 1,
              "type": "array"
            },
            "style": "form"
          },
          {
            "description": "Minimum size in shares.",
            "in": "query",
            "name": "min_size",
            "required": false,
            "schema": {
              "maximum": 1000000000000,
              "minimum": 0,
              "type": "number"
            }
          },
          {
            "description": "Minimum notional value in dollars.",
            "in": "query",
            "name": "min_notional",
            "required": false,
            "schema": {
              "maximum": 1000000000000000,
              "minimum": 0,
              "type": "number"
            }
          }
        ],
        "responses": {
          "101": {
            "description": "Switching protocols: WebSocket protocol ordermap.v1.",
            "headers": {
              "X-RateLimit-Burst-Limit": {
                "$ref": "#/components/headers/RateLimitBurstLimit"
              },
              "X-RateLimit-Burst-Remaining": {
                "$ref": "#/components/headers/RateLimitBurstRemaining"
              },
              "X-RateLimit-Limit": {
                "$ref": "#/components/headers/RateLimitLimit"
              },
              "X-RateLimit-Remaining": {
                "$ref": "#/components/headers/RateLimitRemaining"
              },
              "X-RateLimit-Reset": {
                "$ref": "#/components/headers/RateLimitReset"
              }
            }
          },
          "400": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Invalid handshake parameters or missing, malformed or conflicting persistent device identifier."
          },
          "401": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Missing or invalid API key (Authorization, X-API-Key or, from a browser, the ordermap.key. subprotocol)."
          },
          "403": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The plan has no streaming (streaming_not_in_plan), the dataset is not released, or the account is suspended."
          },
          "409": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "stream_connection_limit: the account is already connected on another device, or already has this event type open on the active device. The existing connection is preserved.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "426": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "The request is not a WebSocket upgrade."
          },
          "429": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "Rate limit or WebSocket cooldown.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          },
          "503": {
            "content": {
              "application/json": {
                "schema": {
                  "$ref": "#/components/schemas/Error"
                }
              }
            },
            "description": "stream_unavailable: the stream is not enabled or its source is down; retry after Retry-After seconds.",
            "headers": {
              "Retry-After": {
                "$ref": "#/components/headers/RetryAfter"
              }
            }
          }
        },
        "summary": "Stock trades.",
        "tags": [
          "streaming"
        ],
        "x-dataset": "equities",
        "x-event": "stocks.trades"
      }
    }
  },
  "security": [
    {
      "BearerAuth": []
    },
    {
      "ApiKeyAuth": []
    }
  ],
  "servers": [
    {
      "description": "Production",
      "url": "https://api.ordermap.si"
    }
  ],
  "tags": [
    {
      "description": "Your plan, limits, usage and the endpoint catalog",
      "name": "account"
    },
    {
      "description": "Background file exports",
      "name": "exports"
    },
    {
      "description": "Futures products, bars, trades, quotes and order flow",
      "name": "futures"
    },
    {
      "description": "Index values, bars, indicators and futures-implied basis",
      "name": "indices"
    },
    {
      "description": "Market status, sessions, calendar and rates",
      "name": "market"
    },
    {
      "description": "Model Context Protocol server",
      "name": "mcp"
    },
    {
      "description": "Options reference data, contracts, chains, flow and analytics",
      "name": "options"
    },
    {
      "description": "Equity quotes, trades, bars, dark pool and reference data",
      "name": "stocks"
    },
    {
      "description": "WebSocket streams",
      "name": "streaming"
    }
  ],
  "x-websockets": {
    "description": "One active client installation per account across all keys, projects and event types, with one connection per event type on that installation. A second device or duplicate event type is refused with HTTP 409 stream_connection_limit before the upgrade; existing connections are preserved. Authenticate the upgrade request with Authorization: Bearer <key> or X-API-Key (a key in the query string is rejected). Supply a persistent random installation identifier (16 to 128 letters, numbers, hyphens or underscores) in X-OrderMap-Device-ID, or as ordermap.device.<id> alongside ordermap.v1. Reuse it for every stream and reconnect on this installation. Missing or conflicting device identifiers are 400 invalid_parameter. A browser cannot set headers on a WebSocket: persist one crypto.randomUUID() in localStorage under ordermap.developer.device.v1 and connect with new WebSocket(url, [\"ordermap.v1\", \"ordermap.key.<key>\", \"ordermap.device.\" + deviceId]). The key subprotocol is read only when the request has neither an Authorization nor an X-API-Key header and offers ordermap.v1; the server answers with Sec-WebSocket-Protocol: ordermap.v1, never repeats or logs the key or device identifier, and treats authentication exactly like a bearer key (rate limit, abuse checks, revalidation). The upgrade counts as one request toward the account rate limit. Device ownership releases when the account's last connection closes. Server messages are JSON text frames: hello {type, protocol, event_type, heartbeat_ms, max_symbols, wildcard, filters}, subscribed {event_type, symbols, filters}, status {event_type, symbol, state: live|degraded|unavailable, reason}, gap {event_type, symbol, reason} (continuity was lost: refetch the missed range through the REST endpoint of the same data), error {code, message, symbol?} and event {type: \"event\", event_type, seq, data}: one event per message, delivered the moment it happens, never batched; seq counts the events of the connection from 1. Client messages: {action: subscribe, symbols, filters} (the initial subscription may also be given in the query string of the upgrade) and {action: unsubscribe, symbols}; filters replace the previous filters of the connection. Keepalive: the server pings every 10 seconds and closes a connection that has not answered within 20 seconds, so a crashed client can reconnect within about 20 seconds. Limits: at most 100 symbols per connection (less where an event type says so), messages from the client at most 4 KiB and 10 per second. A connection that cannot keep up (4,096 messages or 4 MiB queued) is closed with 4008 slow_consumer. The key, project, account and plan are re-checked every 30 seconds: a revoked key or unavailable account closes the connection with 4401, a plan, dataset release or suspension that no longer allows it with 4403.",
    "events": [
      {
        "dataset": "none",
        "description": "Subscribe to any endpoint flagged streamable in GET /v1/catalog with the same query parameters as its REST route. Whenever the data of a subscribed endpoint changes the server sends its complete response (never a delta). Each subscription is refreshed at most once per the endpoint's minimum interval (interval_ms in the subscribed message). Client messages: {action: subscribe, id, route, params, interval_ms} and {action: unsubscribe, id}. The number of subscriptions is limited by the plan, and an account's subscriptions together may refresh at most 10 times a second (choose a longer interval_ms to fit more of them). Subscriptions to the same endpoint and parameters share one refresh. A paginated endpoint streams its first page: has_more is reported, next_cursor_id and next_url are null (page through REST). Under heavy load a refresh can be skipped and retried about one interval later, so a snapshot may arrive late; after several skipped refreshes in a row the server sends {type: status, state: degraded, reason: refresh_delayed, id}, and {state: live} when refreshes resume. Load never produces an error message.",
        "event": {
          "additionalProperties": false,
          "description": "A snapshot of a subscribed endpoint.",
          "properties": {
            "id": {
              "description": "Subscription id chosen by the client.",
              "type": "string"
            },
            "response": {
              "additionalProperties": true,
              "description": "The endpoint's response envelope: data and meta.",
              "type": "object"
            },
            "resync": {
              "description": "True on the first snapshot after subscribing.",
              "type": "boolean"
            },
            "revision": {
              "description": "Increases by one with every change of the data of this subscription.",
              "type": "string"
            },
            "route": {
              "description": "Endpoint path.",
              "type": "string"
            }
          },
          "required": [
            "id",
            "response",
            "resync",
            "revision",
            "route"
          ],
          "type": "object"
        },
        "event_type": "analytics",
        "example": {
          "id": "levels",
          "response": {
            "data": {},
            "meta": {
              "as_of": 1792161000123,
              "coverage": {
                "complete": true
              },
              "delay_ms": 0,
              "delayed": false,
              "request_id": "0198c0a2-0000-7000-8000-000000000000",
              "source": "opra"
            }
          },
          "resync": false,
          "revision": "3",
          "route": "/v1/options/levels"
        },
        "max_symbols": 0,
        "path": "/v1/ws/analytics",
        "summary": "Snapshots of streamable endpoints.",
        "wildcard": false
      },
      {
        "dataset": "futures",
        "description": "The forming and closed one-minute bar of a product or dated contract, built from trades. A forming bar is sent at most 60 times a second; the closed bar (closed: true) is sent once, when the minute ends.",
        "event": {
          "additionalProperties": false,
          "description": "A one-minute bar built from trades.",
          "properties": {
            "buy_volume": {
              "description": "Contracts traded at the ask.",
              "type": "integer"
            },
            "close": {
              "description": "Latest trade price.",
              "type": "number"
            },
            "closed": {
              "description": "True on the final event of the minute.",
              "type": "boolean"
            },
            "contract": {
              "description": "Dated contract.",
              "type": "string"
            },
            "end_time": {
              "description": "End of the minute (exclusive). Unix epoch milliseconds (UTC).",
              "format": "unix-ms",
              "type": "integer"
            },
            "high": {
              "description": "Highest trade price.",
              "type": "number"
            },
            "interval": {
              "description": "Bar size: 1m.",
              "type": "string"
            },
            "low": {
              "description": "Lowest trade price.",
              "type": "number"
            },
            "open": {
              "description": "First trade price.",
              "type": "number"
            },
            "partial": {
              "description": "True when trades of the minute may be missing: the stream started, or lost continuity (a gap was reported), during it. Bars of full minutes that follow are complete.",
              "type": "boolean"
            },
            "sell_volume": {
              "description": "Contracts traded at the bid.",
              "type": "integer"
            },
            "start_time": {
              "description": "Start of the minute (inclusive). Unix epoch milliseconds (UTC).",
              "format": "unix-ms",
              "type": "integer"
            },
            "symbol": {
              "description": "The symbol subscribed to.",
              "type": "string"
            },
            "timestamp": {
              "description": "Time of the latest trade in the bar. Unix epoch milliseconds (UTC).",
              "format": "unix-ms",
              "type": "integer"
            },
            "trade_count": {
              "description": "Number of trades.",
              "type": "integer"
            },
            "unknown_volume": {
              "description": "Contracts whose aggressor is unknown.",
              "type": "integer"
            },
            "volume": {
              "description": "Contracts traded.",
              "type": "integer"
            },
            "vwap": {
              "description": "Volume-weighted average price.",
              "type": "number"
            }
          },
          "required": [
            "buy_volume",
            "close",
            "closed",
            "contract",
            "end_time",
            "high",
            "interval",
            "low",
            "open",
            "partial",
            "sell_volume",
            "start_time",
            "symbol",
            "timestamp",
            "trade_count",
            "unknown_volume",
            "volume",
            "vwap"
          ],
          "type": "object"
        },
        "event_type": "futures.bars",
        "example": {
          "buy_volume": 640,
          "close": 5801.25,
          "closed": false,
          "contract": "ESZ6",
          "end_time": 1792161060000,
          "high": 5801.5,
          "interval": "1m",
          "low": 5800.25,
          "open": 5800.5,
          "partial": false,
          "sell_volume": 520,
          "start_time": 1792161000000,
          "symbol": "ES",
          "timestamp": 1792161042210,
          "trade_count": 412,
          "unknown_volume": 20,
          "volume": 1180,
          "vwap": 5800.91
        },
        "max_symbols": 25,
        "path": "/v1/ws/futures/bars",
        "summary": "Futures one-minute bars.",
        "wildcard": false
      },
      {
        "dataset": "futures",
        "description": "The top ten price levels on each side whenever they change. Every event replaces the previous one, so the first event after subscribing is the initial snapshot. At most 10 symbols per connection.",
        "event": {
          "additionalProperties": false,
          "description": "The top of the order book of a contract.",
          "properties": {
            "asks": {
              "description": "Up to ten ask levels, best first.",
              "items": {
                "additionalProperties": false,
                "description": "One aggregated price level.",
                "properties": {
                  "price": {
                    "description": "Price.",
                    "type": "number"
                  },
                  "price_ticks": {
                    "description": "Price in ticks, as an integer string.",
                    "type": "string"
                  },
                  "size": {
                    "description": "Resting contracts at the price.",
                    "type": "integer"
                  }
                },
                "required": [
                  "price",
                  "price_ticks",
                  "size"
                ],
                "type": "object"
              },
              "type": "array"
            },
            "bids": {
              "description": "Up to ten bid levels, best first.",
              "items": {
                "additionalProperties": false,
                "description": "One aggregated price level.",
                "properties": {
                  "price": {
                    "description": "Price.",
                    "type": "number"
                  },
                  "price_ticks": {
                    "description": "Price in ticks, as an integer string.",
                    "type": "string"
                  },
                  "size": {
                    "description": "Resting contracts at the price.",
                    "type": "integer"
                  }
                },
                "required": [
                  "price",
                  "price_ticks",
                  "size"
                ],
                "type": "object"
              },
              "type": "array"
            },
            "contract": {
              "description": "Dated contract.",
              "type": "string"
            },
            "sequence": {
              "description": "Sequence of the book this event reflects; empty on a repeated snapshot.",
              "type": "string"
            },
            "symbol": {
              "description": "The symbol subscribed to.",
              "type": "string"
            },
            "tick_size": {
              "description": "Minimum price increment.",
              "type": "number"
            },
            "timestamp": {
              "description": "Time of the book. Unix epoch milliseconds (UTC).",
              "format": "unix-ms",
              "type": "integer"
            },
            "valid": {
              "description": "False while the book is not synchronized; the levels are then empty.",
              "type": "boolean"
            }
          },
          "required": [
            "asks",
            "bids",
            "contract",
            "sequence",
            "symbol",
            "tick_size",
            "timestamp",
            "valid"
          ],
          "type": "object"
        },
        "event_type": "futures.depth",
        "example": {
          "asks": [
            {
              "price": 5801.25,
              "price_ticks": "23205",
              "size": 41
            },
            {
              "price": 5801.5,
              "price_ticks": "23206",
              "size": 63
            }
          ],
          "bids": [
            {
              "price": 5801,
              "price_ticks": "23204",
              "size": 52
            },
            {
              "price": 5800.75,
              "price_ticks": "23203",
              "size": 87
            }
          ],
          "contract": "ESZ6",
          "sequence": "1042",
          "symbol": "ES",
          "tick_size": 0.25,
          "timestamp": 1792161000123,
          "valid": true
        },
        "max_symbols": 10,
        "path": "/v1/ws/futures/depth",
        "summary": "Futures market depth.",
        "wildcard": false
      },
      {
        "dataset": "futures",
        "description": "Every change of the best bid and offer of a product or dated contract. The first event after subscribing is the current quote.",
        "event": {
          "additionalProperties": false,
          "description": "The best bid and offer of a contract.",
          "properties": {
            "ask": {
              "description": "Best ask price; null when there is none.",
              "type": [
                "number",
                "null"
              ]
            },
            "ask_size": {
              "description": "Contracts at the best ask.",
              "type": "integer"
            },
            "ask_ticks": {
              "description": "Best ask in ticks, as an integer string.",
              "type": [
                "string",
                "null"
              ]
            },
            "bid": {
              "description": "Best bid price; null when there is none.",
              "type": [
                "number",
                "null"
              ]
            },
            "bid_size": {
              "description": "Contracts at the best bid.",
              "type": "integer"
            },
            "bid_ticks": {
              "description": "Best bid in ticks, as an integer string.",
              "type": [
                "string",
                "null"
              ]
            },
            "contract": {
              "description": "Dated contract.",
              "type": "string"
            },
            "symbol": {
              "description": "The symbol subscribed to.",
              "type": "string"
            },
            "timestamp": {
              "description": "Time of the quote. Unix epoch milliseconds (UTC).",
              "format": "unix-ms",
              "type": "integer"
            },
            "valid": {
              "description": "False when the quote was cleared (market closed, disconnect or crossed book).",
              "type": "boolean"
            }
          },
          "required": [
            "ask",
            "ask_size",
            "ask_ticks",
            "bid",
            "bid_size",
            "bid_ticks",
            "contract",
            "symbol",
            "timestamp",
            "valid"
          ],
          "type": "object"
        },
        "event_type": "futures.quotes",
        "example": {
          "ask": 5801.25,
          "ask_size": 7,
          "ask_ticks": "23205",
          "bid": 5801,
          "bid_size": 12,
          "bid_ticks": "23204",
          "contract": "ESZ6",
          "symbol": "ES",
          "timestamp": 1792161000123,
          "valid": true
        },
        "max_symbols": 25,
        "path": "/v1/ws/futures/quotes",
        "summary": "Futures best bid and offer.",
        "wildcard": false
      },
      {
        "dataset": "futures",
        "description": "One event per trade of a product (ES) or a dated contract (ESZ6), with the price as a decimal and in ticks. A product selects its front contract.",
        "event": {
          "additionalProperties": false,
          "description": "One futures trade.",
          "properties": {
            "contract": {
              "description": "Dated contract that traded, for example ESZ6.",
              "type": "string"
            },
            "id": {
              "description": "Trade id: the content hash that futures trade history reports.",
              "type": "string"
            },
            "price": {
              "description": "Trade price.",
              "type": "number"
            },
            "price_ticks": {
              "description": "Price in ticks, as an integer string.",
              "type": "string"
            },
            "side": {
              "description": "Aggressor side; unknown when it could not be classified.",
              "enum": [
                "buy",
                "sell",
                "unknown"
              ],
              "type": "string"
            },
            "size": {
              "description": "Contracts traded.",
              "type": "integer"
            },
            "symbol": {
              "description": "The symbol subscribed to (a product or a contract).",
              "type": "string"
            },
            "timestamp": {
              "description": "Exchange time of the trade. Unix epoch milliseconds (UTC).",
              "format": "unix-ms",
              "type": "integer"
            }
          },
          "required": [
            "contract",
            "id",
            "price",
            "price_ticks",
            "side",
            "size",
            "symbol",
            "timestamp"
          ],
          "type": "object"
        },
        "event_type": "futures.trades",
        "example": {
          "contract": "ESZ6",
          "id": "9f2c4e1a7b3d",
          "price": 5801.25,
          "price_ticks": "23205",
          "side": "buy",
          "size": 3,
          "symbol": "ES",
          "timestamp": 1792161000123
        },
        "max_symbols": 25,
        "path": "/v1/ws/futures/trades",
        "summary": "Futures trades.",
        "wildcard": false
      },
      {
        "dataset": "indices",
        "description": "The relation between a cash index and its futures: fair value, the futures-implied index price, basis, premium and a state (index_above_implied, index_below_implied, at_fair). An update is sent on every change, at most 60 per second per index; whenever the state changes an extra event with kind crossing follows. Only available while the cash index is live.",
        "event": {
          "additionalProperties": false,
          "description": "The relation between a cash index and its futures.",
          "properties": {
            "basis": {
              "description": "Futures price minus index, in index points.",
              "type": "number"
            },
            "contract": {
              "description": "Dated futures contract used.",
              "type": "string"
            },
            "dividend_yield": {
              "description": "Dividend yield used, continuously compounded.",
              "type": "number"
            },
            "fair_basis": {
              "description": "Fair value minus index, in index points.",
              "type": "number"
            },
            "fair_value": {
              "description": "Fair futures price: index × e^((rate − dividend yield) × years).",
              "type": "number"
            },
            "futures_price": {
              "description": "Futures price used: the quote midpoint, else the last trade.",
              "type": "number"
            },
            "futures_price_basis": {
              "description": "Which futures price was used.",
              "enum": [
                "mid",
                "last"
              ],
              "type": "string"
            },
            "futures_timestamp": {
              "description": "Time of the futures price. Unix epoch milliseconds (UTC).",
              "format": "unix-ms",
              "type": "integer"
            },
            "implied_index_price": {
              "description": "Index level implied by the futures price: futures × e^(−(rate − dividend yield) × years).",
              "type": "number"
            },
            "index_minus_implied": {
              "description": "Cash index minus the futures-implied index price, in index points.",
              "type": "number"
            },
            "index_timestamp": {
              "description": "Time of the index value. Unix epoch milliseconds (UTC).",
              "format": "unix-ms",
              "type": "integer"
            },
            "index_value": {
              "description": "Cash index value.",
              "type": "number"
            },
            "kind": {
              "description": "update on every change; crossing when the state changed (an update follows with the same state).",
              "enum": [
                "update",
                "crossing"
              ],
              "type": "string"
            },
            "premium": {
              "description": "Futures price minus fair value, in index points.",
              "type": "number"
            },
            "premium_bps": {
              "description": "Premium as basis points of the index.",
              "type": "number"
            },
            "previous_state": {
              "description": "State before a crossing; null on updates.",
              "enum": [
                "index_above_implied",
                "index_below_implied",
                "at_fair",
                null
              ],
              "type": [
                "string",
                "null"
              ]
            },
            "rate": {
              "description": "Financing rate used, continuously compounded.",
              "type": "number"
            },
            "settlement_time": {
              "description": "Final settlement of the contract. Unix epoch milliseconds (UTC).",
              "format": "unix-ms",
              "type": "integer"
            },
            "state": {
              "description": "Whether the cash index sits above, below or at the futures-implied price (within the epsilon, 0.25 points by default).",
              "enum": [
                "index_above_implied",
                "index_below_implied",
                "at_fair"
              ],
              "type": "string"
            },
            "symbol": {
              "description": "Index symbol.",
              "type": "string"
            },
            "timestamp": {
              "description": "Time of the newest input. Unix epoch milliseconds (UTC).",
              "format": "unix-ms",
              "type": "integer"
            },
            "years_to_settlement": {
              "description": "Years from now to the contract's final settlement (ACT/365).",
              "type": "number"
            }
          },
          "required": [
            "basis",
            "contract",
            "dividend_yield",
            "fair_basis",
            "fair_value",
            "futures_price",
            "futures_price_basis",
            "futures_timestamp",
            "implied_index_price",
            "index_minus_implied",
            "index_timestamp",
            "index_value",
            "kind",
            "premium",
            "premium_bps",
            "previous_state",
            "rate",
            "settlement_time",
            "state",
            "symbol",
            "timestamp",
            "years_to_settlement"
          ],
          "type": "object"
        },
        "event_type": "indices.basis",
        "example": {
          "basis": 40,
          "contract": "ESZ6",
          "dividend_yield": 0.013,
          "fair_basis": 32.1,
          "fair_value": 5832.1,
          "futures_price": 5840,
          "futures_price_basis": "mid",
          "futures_timestamp": 1792161000100,
          "implied_index_price": 5807.8,
          "index_minus_implied": -7.8,
          "index_timestamp": 1792161000000,
          "index_value": 5800,
          "kind": "crossing",
          "premium": 7.9,
          "premium_bps": 13.6,
          "previous_state": "index_above_implied",
          "rate": 0.045,
          "settlement_time": 1797604200000,
          "state": "index_below_implied",
          "symbol": "SPX",
          "timestamp": 1792161000100,
          "years_to_settlement": 0.1726
        },
        "max_symbols": 10,
        "path": "/v1/ws/indices/basis",
        "summary": "Index versus futures-implied value.",
        "wildcard": false
      },
      {
        "dataset": "indices",
        "description": "Every value of a cash index (SPX, NDX, VIX, …), at most 60 per second per index. The first event after subscribing is the latest value.",
        "event": {
          "additionalProperties": false,
          "description": "One cash index value.",
          "properties": {
            "symbol": {
              "description": "Index symbol, for example SPX.",
              "type": "string"
            },
            "timestamp": {
              "description": "Time of the value. Unix epoch milliseconds (UTC).",
              "format": "unix-ms",
              "type": "integer"
            },
            "value": {
              "description": "Index value.",
              "type": "number"
            }
          },
          "required": [
            "symbol",
            "timestamp",
            "value"
          ],
          "type": "object"
        },
        "event_type": "indices.values",
        "example": {
          "symbol": "SPX",
          "timestamp": 1792161000000,
          "value": 5800.42
        },
        "max_symbols": 100,
        "path": "/v1/ws/indices/values",
        "summary": "Cash index values.",
        "wildcard": false
      },
      {
        "dataset": "options",
        "description": "Finalized consolidated trades: sweeps and splits (several prints of one contract close together) and block prints. Subscribe by option root (SPX also selects SPXW). Every event is a finalized group (or a single block or unusual print); it is sent the moment the group closes.",
        "event": {
          "additionalProperties": false,
          "description": "A consolidated option trade.",
          "properties": {
            "block": {
              "description": "The trade meets the block rule (100 contracts and $50,000, or $250,000).",
              "type": "boolean"
            },
            "contract_type": {
              "description": "Call or put.",
              "enum": [
                "call",
                "put"
              ],
              "type": "string"
            },
            "date_of_expiry": {
              "description": "Expiration date.",
              "format": "date",
              "type": "string"
            },
            "delta": {
              "description": "Delta of the contract; null when unknown.",
              "type": [
                "number",
                "null"
              ]
            },
            "dte": {
              "description": "Calendar days to expiry.",
              "type": "integer"
            },
            "exchanges": {
              "description": "Distinct exchanges involved.",
              "type": "integer"
            },
            "first_timestamp": {
              "description": "Time of the first leg. Unix epoch milliseconds (UTC).",
              "format": "unix-ms",
              "type": "integer"
            },
            "flags": {
              "description": "Flags of the legs: iso, auction, cross, floor, complex, vol_gt_oi, size_gt_oi, ….",
              "items": {
                "description": "Flag name.",
                "type": "string"
              },
              "type": "array"
            },
            "golden": {
              "description": "A sweep with a premium of $1,000,000 or more.",
              "type": "boolean"
            },
            "id": {
              "description": "Group id (ROOT:TRADING_DATE:N), or the print id of a single print.",
              "type": "string"
            },
            "iv": {
              "description": "Implied volatility of the contract as a decimal; null when unknown.",
              "type": [
                "number",
                "null"
              ]
            },
            "legs": {
              "description": "Prints that make up the trade.",
              "type": "integer"
            },
            "option_symbol": {
              "description": "OCC option symbol: root padded to six characters, YYMMDD, C or P and the strike in thousandths as eight digits.",
              "type": "string"
            },
            "otm_pct": {
              "description": "Percent out of the money (negative when in the money); null when unknown.",
              "type": [
                "number",
                "null"
              ]
            },
            "premium": {
              "description": "Total premium in dollars.",
              "type": "number"
            },
            "price": {
              "description": "Volume-weighted average price per contract in dollars.",
              "type": "number"
            },
            "sentiment": {
              "description": "Bullish for bought calls and sold puts, bearish for the mirror, neutral at the mid.",
              "enum": [
                "bullish",
                "bearish",
                "neutral",
                "unknown"
              ],
              "type": "string"
            },
            "session": {
              "description": "Trading session.",
              "enum": [
                "rth",
                "gth",
                "curb",
                null
              ],
              "type": [
                "string",
                "null"
              ]
            },
            "side": {
              "description": "Most aggressive side of the legs relative to the quote, in the classes of GET /v1/options/flow: ask is at or near the ask, bid at or near the bid.",
              "enum": [
                "above_ask",
                "ask",
                "mid",
                "bid",
                "below_bid",
                "unknown"
              ],
              "type": "string"
            },
            "size": {
              "description": "Total contracts.",
              "type": "integer"
            },
            "strike": {
              "description": "Strike price in dollars.",
              "type": "number"
            },
            "timestamp": {
              "description": "Time of the last leg. Unix epoch milliseconds (UTC).",
              "format": "unix-ms",
              "type": "integer"
            },
            "trade_type": {
              "description": "Consolidated trade type: golden is a sweep of $1,000,000 or more; block is a large print or group; single is a lone unusual print.",
              "enum": [
                "sweep",
                "block",
                "split",
                "single",
                "golden"
              ],
              "type": "string"
            },
            "underlying_price": {
              "description": "Underlying price when the trade closed; null when unknown.",
              "type": [
                "number",
                "null"
              ]
            },
            "underlying_symbol": {
              "description": "Option root, for example SPXW (the weekly and daily SPX options) or SPY.",
              "type": "string"
            },
            "unusual": {
              "description": "The trade meets the unusual-activity rule.",
              "type": "boolean"
            }
          },
          "required": [
            "block",
            "contract_type",
            "date_of_expiry",
            "delta",
            "dte",
            "exchanges",
            "first_timestamp",
            "flags",
            "golden",
            "id",
            "iv",
            "legs",
            "option_symbol",
            "otm_pct",
            "premium",
            "price",
            "sentiment",
            "session",
            "side",
            "size",
            "strike",
            "timestamp",
            "trade_type",
            "underlying_price",
            "underlying_symbol",
            "unusual"
          ],
          "type": "object"
        },
        "event_type": "options.flow",
        "example": {
          "block": false,
          "contract_type": "call",
          "date_of_expiry": "2026-10-16",
          "delta": 0.5,
          "dte": 0,
          "exchanges": 3,
          "first_timestamp": 1792161000120,
          "flags": [
            "iso"
          ],
          "golden": false,
          "id": "SPXW:20261016:12",
          "iv": 0.15,
          "legs": 4,
          "option_symbol": "SPXW  261016C05800000",
          "otm_pct": -0.02,
          "premium": 161750,
          "price": 2.1567,
          "sentiment": "bullish",
          "session": "rth",
          "side": "above_ask",
          "size": 750,
          "strike": 5800,
          "timestamp": 1792161000124,
          "trade_type": "sweep",
          "underlying_price": 5801.25,
          "underlying_symbol": "SPXW",
          "unusual": false
        },
        "max_symbols": 100,
        "path": "/v1/ws/options/flow",
        "summary": "Consolidated sweeps, splits and blocks.",
        "wildcard": false
      },
      {
        "dataset": "options",
        "description": "One event per print, with the quote at the print, the side classification and the contract's implied volatility and delta, delivered the moment the print is classified: no batching, no hold-back of sweep legs. Subscribe by option root (SPX also selects SPXW; use the root to select one) or with * for every print. A cancelled print is not retracted: cancels are not sent on the stream, so a print that is cancelled later stays delivered; reconcile through the REST trades endpoint, which leaves cancelled prints out.",
        "event": {
          "additionalProperties": false,
          "description": "One classified option print.",
          "properties": {
            "ask": {
              "description": "Best ask at the print; null without a valid quote.",
              "type": [
                "number",
                "null"
              ]
            },
            "bid": {
              "description": "Best bid at the print; null without a valid quote.",
              "type": [
                "number",
                "null"
              ]
            },
            "conditions": {
              "description": "Trade condition codes.",
              "items": {
                "description": "Condition code.",
                "type": "integer"
              },
              "type": "array"
            },
            "contract_type": {
              "description": "Call or put.",
              "enum": [
                "call",
                "put"
              ],
              "type": "string"
            },
            "date_of_expiry": {
              "description": "Expiration date.",
              "format": "date",
              "type": "string"
            },
            "delta": {
              "description": "Delta of the contract; null when unknown.",
              "type": [
                "number",
                "null"
              ]
            },
            "exchange": {
              "description": "Numeric id of the executing exchange.",
              "type": "integer"
            },
            "exchange_name": {
              "description": "Name of the executing exchange.",
              "type": "string"
            },
            "flags": {
              "description": "Print flags: iso, auction, cross, floor, complex, tied, implied, ext_hours, late, aggressor_hint, post_cash_close, vol_gt_oi, size_gt_oi.",
              "items": {
                "description": "Flag name.",
                "type": "string"
              },
              "type": "array"
            },
            "id": {
              "description": "Print id: ROOT:EXPIRY:STRIKE×1000:C|P:EVENT_DATE:SEQUENCE. A single print keeps this id in options.flow and options.unusual.",
              "type": "string"
            },
            "iv": {
              "description": "Implied volatility of the contract as a decimal (0.15 = 15%); null when unknown.",
              "type": [
                "number",
                "null"
              ]
            },
            "option_symbol": {
              "description": "OCC option symbol: root padded to six characters, YYMMDD, C or P and the strike in thousandths as eight digits.",
              "type": "string"
            },
            "premium": {
              "description": "Premium in dollars: price × size × 100.",
              "type": "number"
            },
            "price": {
              "description": "Trade price per contract in dollars.",
              "type": "number"
            },
            "session": {
              "description": "Trading session of the print.",
              "enum": [
                "rth",
                "gth",
                "curb",
                null
              ],
              "type": [
                "string",
                "null"
              ]
            },
            "side": {
              "description": "Where the print sits relative to the quote at the print; unknown when no valid quote was available.",
              "enum": [
                "above_ask",
                "at_ask",
                "near_ask",
                "mid",
                "near_bid",
                "at_bid",
                "below_bid",
                "unknown"
              ],
              "type": "string"
            },
            "size": {
              "description": "Contracts traded.",
              "type": "integer"
            },
            "strike": {
              "description": "Strike price in dollars.",
              "type": "number"
            },
            "timestamp": {
              "description": "Time of the print. Unix epoch milliseconds (UTC).",
              "format": "unix-ms",
              "type": "integer"
            },
            "underlying_price": {
              "description": "Price of the underlying when the print was classified; null when unknown.",
              "type": [
                "number",
                "null"
              ]
            },
            "underlying_symbol": {
              "description": "Option root, for example SPXW (the weekly and daily SPX options) or SPY.",
              "type": "string"
            }
          },
          "required": [
            "ask",
            "bid",
            "conditions",
            "contract_type",
            "date_of_expiry",
            "delta",
            "exchange",
            "exchange_name",
            "flags",
            "id",
            "iv",
            "option_symbol",
            "premium",
            "price",
            "session",
            "side",
            "size",
            "strike",
            "timestamp",
            "underlying_price",
            "underlying_symbol"
          ],
          "type": "object"
        },
        "event_type": "options.trades",
        "example": {
          "ask": 12.5,
          "bid": 12.4,
          "conditions": [
            95
          ],
          "contract_type": "call",
          "date_of_expiry": "2026-10-16",
          "delta": 0.5231,
          "exchange": 5,
          "exchange_name": "CBOE",
          "flags": [
            "iso"
          ],
          "id": "SPXW:20261016:5800000:C:20261016:99",
          "iv": 0.1523,
          "option_symbol": "SPXW  261016C05800000",
          "premium": 12500,
          "price": 12.5,
          "session": "rth",
          "side": "at_ask",
          "size": 10,
          "strike": 5800,
          "timestamp": 1792161000123,
          "underlying_price": 5801.27,
          "underlying_symbol": "SPXW"
        },
        "max_symbols": 100,
        "path": "/v1/ws/options/trades",
        "summary": "Every classified option print.",
        "wildcard": true
      },
      {
        "dataset": "options",
        "description": "Prints and consolidated trades that meet the unusual-activity rule: volume above open interest within 45 days of expiry, premium of at least $250,000, or an out-of-the-money buy sweep. Subscribe by option root (SPX also selects SPXW). Every event is a finalized group (or a single block or unusual print); it is sent the moment the group closes.",
        "event": {
          "additionalProperties": false,
          "description": "A consolidated option trade.",
          "properties": {
            "block": {
              "description": "The trade meets the block rule (100 contracts and $50,000, or $250,000).",
              "type": "boolean"
            },
            "contract_type": {
              "description": "Call or put.",
              "enum": [
                "call",
                "put"
              ],
              "type": "string"
            },
            "date_of_expiry": {
              "description": "Expiration date.",
              "format": "date",
              "type": "string"
            },
            "delta": {
              "description": "Delta of the contract; null when unknown.",
              "type": [
                "number",
                "null"
              ]
            },
            "dte": {
              "description": "Calendar days to expiry.",
              "type": "integer"
            },
            "exchanges": {
              "description": "Distinct exchanges involved.",
              "type": "integer"
            },
            "first_timestamp": {
              "description": "Time of the first leg. Unix epoch milliseconds (UTC).",
              "format": "unix-ms",
              "type": "integer"
            },
            "flags": {
              "description": "Flags of the legs: iso, auction, cross, floor, complex, vol_gt_oi, size_gt_oi, ….",
              "items": {
                "description": "Flag name.",
                "type": "string"
              },
              "type": "array"
            },
            "golden": {
              "description": "A sweep with a premium of $1,000,000 or more.",
              "type": "boolean"
            },
            "id": {
              "description": "Group id (ROOT:TRADING_DATE:N), or the print id of a single print.",
              "type": "string"
            },
            "iv": {
              "description": "Implied volatility of the contract as a decimal; null when unknown.",
              "type": [
                "number",
                "null"
              ]
            },
            "legs": {
              "description": "Prints that make up the trade.",
              "type": "integer"
            },
            "option_symbol": {
              "description": "OCC option symbol: root padded to six characters, YYMMDD, C or P and the strike in thousandths as eight digits.",
              "type": "string"
            },
            "otm_pct": {
              "description": "Percent out of the money (negative when in the money); null when unknown.",
              "type": [
                "number",
                "null"
              ]
            },
            "premium": {
              "description": "Total premium in dollars.",
              "type": "number"
            },
            "price": {
              "description": "Volume-weighted average price per contract in dollars.",
              "type": "number"
            },
            "sentiment": {
              "description": "Bullish for bought calls and sold puts, bearish for the mirror, neutral at the mid.",
              "enum": [
                "bullish",
                "bearish",
                "neutral",
                "unknown"
              ],
              "type": "string"
            },
            "session": {
              "description": "Trading session.",
              "enum": [
                "rth",
                "gth",
                "curb",
                null
              ],
              "type": [
                "string",
                "null"
              ]
            },
            "side": {
              "description": "Most aggressive side of the legs relative to the quote, in the classes of GET /v1/options/flow: ask is at or near the ask, bid at or near the bid.",
              "enum": [
                "above_ask",
                "ask",
                "mid",
                "bid",
                "below_bid",
                "unknown"
              ],
              "type": "string"
            },
            "size": {
              "description": "Total contracts.",
              "type": "integer"
            },
            "strike": {
              "description": "Strike price in dollars.",
              "type": "number"
            },
            "timestamp": {
              "description": "Time of the last leg. Unix epoch milliseconds (UTC).",
              "format": "unix-ms",
              "type": "integer"
            },
            "trade_type": {
              "description": "Consolidated trade type: golden is a sweep of $1,000,000 or more; block is a large print or group; single is a lone unusual print.",
              "enum": [
                "sweep",
                "block",
                "split",
                "single",
                "golden"
              ],
              "type": "string"
            },
            "underlying_price": {
              "description": "Underlying price when the trade closed; null when unknown.",
              "type": [
                "number",
                "null"
              ]
            },
            "underlying_symbol": {
              "description": "Option root, for example SPXW (the weekly and daily SPX options) or SPY.",
              "type": "string"
            },
            "unusual": {
              "description": "The trade meets the unusual-activity rule.",
              "type": "boolean"
            }
          },
          "required": [
            "block",
            "contract_type",
            "date_of_expiry",
            "delta",
            "dte",
            "exchanges",
            "first_timestamp",
            "flags",
            "golden",
            "id",
            "iv",
            "legs",
            "option_symbol",
            "otm_pct",
            "premium",
            "price",
            "sentiment",
            "session",
            "side",
            "size",
            "strike",
            "timestamp",
            "trade_type",
            "underlying_price",
            "underlying_symbol",
            "unusual"
          ],
          "type": "object"
        },
        "event_type": "options.unusual",
        "example": {
          "block": false,
          "contract_type": "call",
          "date_of_expiry": "2026-10-16",
          "delta": 0.5,
          "dte": 0,
          "exchanges": 3,
          "first_timestamp": 1792161000120,
          "flags": [
            "iso"
          ],
          "golden": false,
          "id": "SPXW:20261016:12",
          "iv": 0.15,
          "legs": 4,
          "option_symbol": "SPXW  261016C05800000",
          "otm_pct": -0.02,
          "premium": 161750,
          "price": 2.1567,
          "sentiment": "bullish",
          "session": "rth",
          "side": "above_ask",
          "size": 750,
          "strike": 5800,
          "timestamp": 1792161000124,
          "trade_type": "sweep",
          "underlying_price": 5801.25,
          "underlying_symbol": "SPXW",
          "unusual": false
        },
        "max_symbols": 100,
        "path": "/v1/ws/options/unusual",
        "summary": "Unusual option activity.",
        "wildcard": false
      },
      {
        "dataset": "equities",
        "description": "One event per second bar and per minute bar of a stock.",
        "event": {
          "additionalProperties": false,
          "description": "A second or minute bar.",
          "properties": {
            "accumulated_volume": {
              "description": "Shares traded today.",
              "type": [
                "number",
                "null"
              ]
            },
            "average_trade_size": {
              "description": "Average trade size in the bar.",
              "type": [
                "number",
                "null"
              ]
            },
            "close": {
              "description": "Latest trade price.",
              "type": "number"
            },
            "end_time": {
              "description": "End of the bar (exclusive). Unix epoch milliseconds (UTC).",
              "format": "unix-ms",
              "type": "integer"
            },
            "high": {
              "description": "Highest trade price.",
              "type": "number"
            },
            "interval": {
              "description": "Bar size.",
              "enum": [
                "1s",
                "1m"
              ],
              "type": "string"
            },
            "low": {
              "description": "Lowest trade price.",
              "type": "number"
            },
            "open": {
              "description": "First trade price.",
              "type": "number"
            },
            "otc": {
              "description": "True for an over-the-counter symbol.",
              "type": "boolean"
            },
            "start_time": {
              "description": "Start of the bar (inclusive). Unix epoch milliseconds (UTC).",
              "format": "unix-ms",
              "type": "integer"
            },
            "symbol": {
              "description": "Ticker.",
              "type": "string"
            },
            "volume": {
              "description": "Shares traded in the bar.",
              "type": [
                "number",
                "null"
              ]
            },
            "vwap": {
              "description": "Volume-weighted average price of the bar.",
              "type": [
                "number",
                "null"
              ]
            }
          },
          "required": [
            "accumulated_volume",
            "average_trade_size",
            "close",
            "end_time",
            "high",
            "interval",
            "low",
            "open",
            "otc",
            "start_time",
            "symbol",
            "volume",
            "vwap"
          ],
          "type": "object"
        },
        "event_type": "stocks.bars",
        "example": {
          "accumulated_volume": 4812330,
          "average_trade_size": 96,
          "close": 231.42,
          "end_time": 1792161060000,
          "high": 231.5,
          "interval": "1m",
          "low": 231.28,
          "open": 231.3,
          "otc": false,
          "start_time": 1792161000000,
          "symbol": "AAPL",
          "volume": 18420,
          "vwap": 231.39
        },
        "max_symbols": 100,
        "path": "/v1/ws/stocks/bars",
        "summary": "Stock second and minute bars.",
        "wildcard": false
      },
      {
        "dataset": "equities",
        "description": "Trades whose notional value reaches the block threshold. Subscribe by symbol.",
        "event": {
          "additionalProperties": false,
          "description": "One stock trade.",
          "properties": {
            "conditions": {
              "description": "Trade condition codes.",
              "items": {
                "description": "Condition code.",
                "type": "integer"
              },
              "type": "array"
            },
            "exchange": {
              "description": "Numeric id of the executing exchange; 4 is an off-exchange trade.",
              "type": [
                "integer",
                "null"
              ]
            },
            "notional": {
              "description": "Price × size in dollars.",
              "type": "number"
            },
            "off_exchange": {
              "description": "True for a trade reported by a trade reporting facility.",
              "type": "boolean"
            },
            "participant_timestamp": {
              "description": "Time the exchange stamped the trade. Unix epoch milliseconds (UTC).",
              "format": "unix-ms",
              "type": [
                "integer",
                "null"
              ]
            },
            "price": {
              "description": "Trade price.",
              "type": "number"
            },
            "sequence_number": {
              "description": "Consolidated sequence number.",
              "type": [
                "integer",
                "null"
              ]
            },
            "size": {
              "description": "Trade size in shares.",
              "type": "number"
            },
            "symbol": {
              "description": "Ticker.",
              "type": "string"
            },
            "tape": {
              "description": "Consolidated tape (1 = NYSE, 2 = NYSE American, 3 = Nasdaq).",
              "type": [
                "integer",
                "null"
              ]
            },
            "timestamp": {
              "description": "Time the consolidated feed stamped the trade. Unix epoch milliseconds (UTC).",
              "format": "unix-ms",
              "type": "integer"
            },
            "trade_id": {
              "description": "Trade id; null when the feed supplies none.",
              "type": [
                "string",
                "null"
              ]
            },
            "trf_id": {
              "description": "Trade reporting facility id of an off-exchange trade.",
              "type": [
                "integer",
                "null"
              ]
            },
            "trf_timestamp": {
              "description": "Time the facility received an off-exchange trade. Unix epoch milliseconds (UTC).",
              "format": "unix-ms",
              "type": [
                "integer",
                "null"
              ]
            }
          },
          "required": [
            "conditions",
            "exchange",
            "notional",
            "off_exchange",
            "participant_timestamp",
            "price",
            "sequence_number",
            "size",
            "symbol",
            "tape",
            "timestamp",
            "trade_id",
            "trf_id",
            "trf_timestamp"
          ],
          "type": "object"
        },
        "event_type": "stocks.blocks",
        "example": {
          "conditions": [
            12,
            37
          ],
          "exchange": 4,
          "notional": 23142,
          "off_exchange": true,
          "participant_timestamp": 1792161000120,
          "price": 231.42,
          "sequence_number": 1563,
          "size": 100,
          "symbol": "AAPL",
          "tape": 3,
          "timestamp": 1792161000123,
          "trade_id": "52983525029461",
          "trf_id": 202,
          "trf_timestamp": 1792161000122
        },
        "max_symbols": 100,
        "path": "/v1/ws/stocks/blocks",
        "summary": "Large stock trades.",
        "wildcard": false
      },
      {
        "dataset": "equities",
        "description": "Every trade reported by a trade reporting facility (off-exchange). Subscribe by symbol.",
        "event": {
          "additionalProperties": false,
          "description": "One stock trade.",
          "properties": {
            "conditions": {
              "description": "Trade condition codes.",
              "items": {
                "description": "Condition code.",
                "type": "integer"
              },
              "type": "array"
            },
            "exchange": {
              "description": "Numeric id of the executing exchange; 4 is an off-exchange trade.",
              "type": [
                "integer",
                "null"
              ]
            },
            "notional": {
              "description": "Price × size in dollars.",
              "type": "number"
            },
            "off_exchange": {
              "description": "True for a trade reported by a trade reporting facility.",
              "type": "boolean"
            },
            "participant_timestamp": {
              "description": "Time the exchange stamped the trade. Unix epoch milliseconds (UTC).",
              "format": "unix-ms",
              "type": [
                "integer",
                "null"
              ]
            },
            "price": {
              "description": "Trade price.",
              "type": "number"
            },
            "sequence_number": {
              "description": "Consolidated sequence number.",
              "type": [
                "integer",
                "null"
              ]
            },
            "size": {
              "description": "Trade size in shares.",
              "type": "number"
            },
            "symbol": {
              "description": "Ticker.",
              "type": "string"
            },
            "tape": {
              "description": "Consolidated tape (1 = NYSE, 2 = NYSE American, 3 = Nasdaq).",
              "type": [
                "integer",
                "null"
              ]
            },
            "timestamp": {
              "description": "Time the consolidated feed stamped the trade. Unix epoch milliseconds (UTC).",
              "format": "unix-ms",
              "type": "integer"
            },
            "trade_id": {
              "description": "Trade id; null when the feed supplies none.",
              "type": [
                "string",
                "null"
              ]
            },
            "trf_id": {
              "description": "Trade reporting facility id of an off-exchange trade.",
              "type": [
                "integer",
                "null"
              ]
            },
            "trf_timestamp": {
              "description": "Time the facility received an off-exchange trade. Unix epoch milliseconds (UTC).",
              "format": "unix-ms",
              "type": [
                "integer",
                "null"
              ]
            }
          },
          "required": [
            "conditions",
            "exchange",
            "notional",
            "off_exchange",
            "participant_timestamp",
            "price",
            "sequence_number",
            "size",
            "symbol",
            "tape",
            "timestamp",
            "trade_id",
            "trf_id",
            "trf_timestamp"
          ],
          "type": "object"
        },
        "event_type": "stocks.dark_pool",
        "example": {
          "conditions": [
            12,
            37
          ],
          "exchange": 4,
          "notional": 23142,
          "off_exchange": true,
          "participant_timestamp": 1792161000120,
          "price": 231.42,
          "sequence_number": 1563,
          "size": 100,
          "symbol": "AAPL",
          "tape": 3,
          "timestamp": 1792161000123,
          "trade_id": "52983525029461",
          "trf_id": 202,
          "trf_timestamp": 1792161000122
        },
        "max_symbols": 100,
        "path": "/v1/ws/stocks/dark-pool",
        "summary": "Off-exchange stock trades.",
        "wildcard": false
      },
      {
        "dataset": "equities",
        "description": "Opening, closing and halt-resumption auction imbalances of exchange-listed stocks. Subscribe by symbol or with * for every auction.",
        "event": {
          "additionalProperties": false,
          "description": "An exchange auction imbalance.",
          "properties": {
            "auction_clock_et": {
              "description": "The same time as the exchange publishes it: HH:MM, Eastern Time.",
              "type": [
                "string",
                "null"
              ]
            },
            "auction_timestamp": {
              "description": "Scheduled auction time as an instant, on the Eastern date of timestamp. Unix epoch milliseconds (UTC).",
              "format": "unix-ms",
              "type": [
                "integer",
                "null"
              ]
            },
            "auction_type": {
              "description": "Auction: opening (core opening), early_opening, reopening (after a halt), closing, extreme_closing_imbalance, regulatory_closing_imbalance.",
              "enum": [
                "early_opening",
                "opening",
                "reopening",
                "closing",
                "extreme_closing_imbalance",
                "regulatory_closing_imbalance",
                "unknown"
              ],
              "type": "string"
            },
            "book_clearing_price": {
              "description": "Indicative auction price.",
              "type": [
                "number",
                "null"
              ]
            },
            "exchange": {
              "description": "Numeric id of the auctioning exchange.",
              "type": [
                "integer",
                "null"
              ]
            },
            "imbalance_quantity": {
              "description": "Imbalance in shares; positive is buy-side.",
              "type": [
                "integer",
                "null"
              ]
            },
            "paired_quantity": {
              "description": "Shares matched at the indicative price.",
              "type": [
                "integer",
                "null"
              ]
            },
            "sequence_number": {
              "description": "Per-symbol sequence number.",
              "type": [
                "integer",
                "null"
              ]
            },
            "symbol": {
              "description": "Ticker.",
              "type": "string"
            },
            "timestamp": {
              "description": "Time of the update. Unix epoch milliseconds (UTC).",
              "format": "unix-ms",
              "type": "integer"
            }
          },
          "required": [
            "symbol",
            "timestamp",
            "auction_timestamp",
            "auction_clock_et",
            "auction_type",
            "sequence_number",
            "exchange",
            "imbalance_quantity",
            "paired_quantity",
            "book_clearing_price"
          ],
          "type": "object"
        },
        "event_type": "stocks.imbalances",
        "example": {
          "auction_clock_et": "16:00",
          "auction_timestamp": 1792180800000,
          "auction_type": "closing",
          "book_clearing_price": 231.42,
          "exchange": 10,
          "imbalance_quantity": 480000,
          "paired_quantity": 1240000,
          "sequence_number": 44,
          "symbol": "JPM",
          "timestamp": 1792180800000
        },
        "max_symbols": 100,
        "path": "/v1/ws/stocks/imbalances",
        "summary": "Exchange auction imbalances.",
        "wildcard": true
      },
      {
        "dataset": "equities",
        "description": "Every update of a stock's price bands, and trading pauses and resumptions.",
        "event": {
          "additionalProperties": false,
          "description": "A limit up-limit down band update.",
          "properties": {
            "indicators": {
              "description": "LULD indicator codes; 17 is a trading pause and 18 a reopening.",
              "items": {
                "description": "Indicator code.",
                "type": "integer"
              },
              "type": "array"
            },
            "lower_limit_price": {
              "description": "Lower price band.",
              "type": [
                "number",
                "null"
              ]
            },
            "sequence_number": {
              "description": "Sequence number of the update.",
              "type": [
                "integer",
                "null"
              ]
            },
            "state": {
              "description": "band_update for a new band, halted for a trading pause, resumed after one.",
              "enum": [
                "band_update",
                "halted",
                "resumed"
              ],
              "type": "string"
            },
            "symbol": {
              "description": "Ticker.",
              "type": "string"
            },
            "tape": {
              "description": "Consolidated tape.",
              "type": [
                "integer",
                "null"
              ]
            },
            "timestamp": {
              "description": "Time of the update. Unix epoch milliseconds (UTC).",
              "format": "unix-ms",
              "type": "integer"
            },
            "upper_limit_price": {
              "description": "Upper price band.",
              "type": [
                "number",
                "null"
              ]
            }
          },
          "required": [
            "symbol",
            "timestamp",
            "upper_limit_price",
            "lower_limit_price",
            "indicators",
            "tape",
            "sequence_number",
            "state"
          ],
          "type": "object"
        },
        "event_type": "stocks.luld",
        "example": {
          "indicators": [
            15
          ],
          "lower_limit_price": 219.85,
          "sequence_number": 91,
          "state": "band_update",
          "symbol": "AAPL",
          "tape": 3,
          "timestamp": 1792161000123,
          "upper_limit_price": 242.99
        },
        "max_symbols": 100,
        "path": "/v1/ws/stocks/luld",
        "summary": "Limit up-limit down bands and halts.",
        "wildcard": false
      },
      {
        "dataset": "equities",
        "description": "Every change of the national best bid and offer of a stock.",
        "event": {
          "additionalProperties": false,
          "description": "A national best bid and offer update.",
          "properties": {
            "ask_exchange": {
              "description": "Exchange of the best offer.",
              "type": [
                "integer",
                "null"
              ]
            },
            "ask_price": {
              "description": "National best offer; null when there is none.",
              "type": [
                "number",
                "null"
              ]
            },
            "ask_size": {
              "description": "Shares at the best offer.",
              "type": [
                "number",
                "null"
              ]
            },
            "bid_exchange": {
              "description": "Exchange of the best bid.",
              "type": [
                "integer",
                "null"
              ]
            },
            "bid_price": {
              "description": "National best bid; null when there is none.",
              "type": [
                "number",
                "null"
              ]
            },
            "bid_size": {
              "description": "Shares at the best bid.",
              "type": [
                "number",
                "null"
              ]
            },
            "conditions": {
              "description": "Quote condition codes.",
              "items": {
                "description": "Condition code.",
                "type": "integer"
              },
              "type": "array"
            },
            "indicators": {
              "description": "Quote indicator codes.",
              "items": {
                "description": "Indicator code.",
                "type": "integer"
              },
              "type": "array"
            },
            "participant_timestamp": {
              "description": "Time the exchange stamped the quote. Unix epoch milliseconds (UTC).",
              "format": "unix-ms",
              "type": [
                "integer",
                "null"
              ]
            },
            "sequence_number": {
              "description": "Sequence number of the quote.",
              "type": [
                "integer",
                "null"
              ]
            },
            "symbol": {
              "description": "Ticker.",
              "type": "string"
            },
            "tape": {
              "description": "Consolidated tape.",
              "type": [
                "integer",
                "null"
              ]
            },
            "timestamp": {
              "description": "Time the consolidated feed stamped the quote. Unix epoch milliseconds (UTC).",
              "format": "unix-ms",
              "type": "integer"
            }
          },
          "required": [
            "ask_exchange",
            "ask_price",
            "ask_size",
            "bid_exchange",
            "bid_price",
            "bid_size",
            "conditions",
            "indicators",
            "participant_timestamp",
            "sequence_number",
            "symbol",
            "tape",
            "timestamp"
          ],
          "type": "object"
        },
        "event_type": "stocks.quotes",
        "example": {
          "ask_exchange": 12,
          "ask_price": 231.43,
          "ask_size": 200,
          "bid_exchange": 11,
          "bid_price": 231.41,
          "bid_size": 300,
          "conditions": [
            0
          ],
          "indicators": [
            602
          ],
          "participant_timestamp": 1792161000121,
          "sequence_number": 8841,
          "symbol": "AAPL",
          "tape": 3,
          "timestamp": 1792161000123
        },
        "max_symbols": 50,
        "path": "/v1/ws/stocks/quotes",
        "summary": "Stock national best bid and offer.",
        "wildcard": false
      },
      {
        "dataset": "equities",
        "description": "Every consolidated trade of a stock. Cancels and corrections do not appear on the stream.",
        "event": {
          "additionalProperties": false,
          "description": "One stock trade.",
          "properties": {
            "conditions": {
              "description": "Trade condition codes.",
              "items": {
                "description": "Condition code.",
                "type": "integer"
              },
              "type": "array"
            },
            "exchange": {
              "description": "Numeric id of the executing exchange; 4 is an off-exchange trade.",
              "type": [
                "integer",
                "null"
              ]
            },
            "notional": {
              "description": "Price × size in dollars.",
              "type": "number"
            },
            "off_exchange": {
              "description": "True for a trade reported by a trade reporting facility.",
              "type": "boolean"
            },
            "participant_timestamp": {
              "description": "Time the exchange stamped the trade. Unix epoch milliseconds (UTC).",
              "format": "unix-ms",
              "type": [
                "integer",
                "null"
              ]
            },
            "price": {
              "description": "Trade price.",
              "type": "number"
            },
            "sequence_number": {
              "description": "Consolidated sequence number.",
              "type": [
                "integer",
                "null"
              ]
            },
            "size": {
              "description": "Trade size in shares.",
              "type": "number"
            },
            "symbol": {
              "description": "Ticker.",
              "type": "string"
            },
            "tape": {
              "description": "Consolidated tape (1 = NYSE, 2 = NYSE American, 3 = Nasdaq).",
              "type": [
                "integer",
                "null"
              ]
            },
            "timestamp": {
              "description": "Time the consolidated feed stamped the trade. Unix epoch milliseconds (UTC).",
              "format": "unix-ms",
              "type": "integer"
            },
            "trade_id": {
              "description": "Trade id; null when the feed supplies none.",
              "type": [
                "string",
                "null"
              ]
            },
            "trf_id": {
              "description": "Trade reporting facility id of an off-exchange trade.",
              "type": [
                "integer",
                "null"
              ]
            },
            "trf_timestamp": {
              "description": "Time the facility received an off-exchange trade. Unix epoch milliseconds (UTC).",
              "format": "unix-ms",
              "type": [
                "integer",
                "null"
              ]
            }
          },
          "required": [
            "conditions",
            "exchange",
            "notional",
            "off_exchange",
            "participant_timestamp",
            "price",
            "sequence_number",
            "size",
            "symbol",
            "tape",
            "timestamp",
            "trade_id",
            "trf_id",
            "trf_timestamp"
          ],
          "type": "object"
        },
        "event_type": "stocks.trades",
        "example": {
          "conditions": [
            12,
            37
          ],
          "exchange": 4,
          "notional": 23142,
          "off_exchange": true,
          "participant_timestamp": 1792161000120,
          "price": 231.42,
          "sequence_number": 1563,
          "size": 100,
          "symbol": "AAPL",
          "tape": 3,
          "timestamp": 1792161000123,
          "trade_id": "52983525029461",
          "trf_id": 202,
          "trf_timestamp": 1792161000122
        },
        "max_symbols": 50,
        "path": "/v1/ws/stocks/trades",
        "summary": "Stock trades.",
        "wildcard": false
      }
    ],
    "protocol": "ordermap.v1"
  }
}
