---
title: "Get Multivariate Events"
method: GET
path: "/events/multivariate"
tags: ["events"]
---

# Get Multivariate Events

`GET /events/multivariate`

## Request

- Base URL: `https://external-api.kalshi.com/trade-api/v2`
- URL: `https://external-api.kalshi.com/trade-api/v2/events/multivariate`
- Auth: none declared

Retrieve multivariate (combo) events. These are dynamically created events from multivariate event collections. Supports filtering by series ticker, collection ticker, or a comma-separated list of event tickers.

## Query parameters

- `limit` integer
- `cursor` string
- `series_ticker` string
- `collection_ticker` string
- `tickers` string
- `with_nested_markets` boolean

## Response `200`

Multivariate events retrieved successfully

- GetMultivariateEventsResponse
  - `events` EventData[], required: Array of multivariate events matching the query criteria.
    - `event_ticker` string, required: Unique identifier for this event.
    - `series_ticker` string, required: Unique identifier for the series this event belongs to.
    - `sub_title` string, required: Shortened descriptive title for the event.
    - `title` string, required: Full title of the event.
    - `collateral_return_type` string, required: Collateral-return netting type for this event: `MECNET` for mutually exclusive markets, `DIRECNET` for directional netting, or an empty string for no collateral-return netting. Netting applies within this event, not across all events in its series, and also requires netting to be enabled for the trading account or subtrader. Use `with_nested_markets=true` to retrieve the markets associated with each event.
    - `mutually_exclusive` boolean, required: True when `collateral_return_type` is `MECNET`: at most one market in this event can resolve to 'yes'. False for both `DIRECNET` and an empty collateral-return type. A false value does not mean collateral-return netting is unavailable. Use `collateral_return_type` to distinguish these cases.
    - `category` string: Event category (deprecated, use series-level category instead).
    - `strike_date` string, date-time, nullable: The specific date this event is based on. Only filled when the event uses a date strike (mutually exclusive with strike_period).
    - `strike_period` string, nullable: The time period this event covers (e.g., 'week', 'month'). Only filled when the event uses a period strike (mutually exclusive with strike_date).
    - `markets` Market[]: Array of markets associated with this event. Only populated when 'with_nested_markets=true' is specified in the request.
      - `ticker` string, required
      - `event_ticker` string, required
      - `market_type` 'binary' | 'scalar', required: Identifies the type of market
      - `title` string
      - `subtitle` string
      - `yes_sub_title` string, required: Shortened title for the yes side of this market
      - `no_sub_title` string, required: Deprecated. Use `yes_sub_title` instead. Equal to `yes_sub_title` on every market created since September 2024.
      - `created_time` string, date-time, required
      - `updated_time` string, date-time, required: Time of the last non-trading metadata update.
      - `open_time` string, date-time, required
      - `close_time` string, date-time, required
      - `expected_expiration_time` string, date-time, nullable: Time when this market is expected to expire
      - `expiration_time` string, date-time
      - `latest_expiration_time` string, date-time, required: Latest possible time for this market to expire
      - `settlement_timer_seconds` integer, required: The amount of time after determination that the market settles
      - `status` 'initialized' | 'inactive' | 'active' | 'closed' | 'determined' | 'disputed' | 'amended' | 'finalized', required: The current status of the market in its lifecycle.
      - `yes_bid_dollars` string, required: Fixed-point US dollar string. Most request fields accept 2-4 decimal places (e.g., "0.56", "0.5600"); responses emit up to 6. Valid quote intervals for a given market are constrained by that market's price level structure.
      - `yes_bid_size_fp` string, required: Fixed-point contract count string (2 decimals, e.g., "10.00"; referred to as "fp" in field names). Requests accept 0-2 decimal places (e.g., "10", "10.0", "10.00"); responses always emit 2 decimals. Fractional contract values (e.g., "2.50") are supported; the minimum granularity is 0.01 contracts.
      - `yes_ask_dollars` string, required: Fixed-point US dollar string. Most request fields accept 2-4 decimal places (e.g., "0.56", "0.5600"); responses emit up to 6. Valid quote intervals for a given market are constrained by that market's price level structure.
      - `yes_ask_size_fp` string, required: Fixed-point contract count string (2 decimals, e.g., "10.00"; referred to as "fp" in field names). Requests accept 0-2 decimal places (e.g., "10", "10.0", "10.00"); responses always emit 2 decimals. Fractional contract values (e.g., "2.50") are supported; the minimum granularity is 0.01 contracts.
      - `no_bid_dollars` string, required: Fixed-point US dollar string. Most request fields accept 2-4 decimal places (e.g., "0.56", "0.5600"); responses emit up to 6. Valid quote intervals for a given market are constrained by that market's price level structure.
      - `no_ask_dollars` string, required: Fixed-point US dollar string. Most request fields accept 2-4 decimal places (e.g., "0.56", "0.5600"); responses emit up to 6. Valid quote intervals for a given market are constrained by that market's price level structure.
      - `last_price_dollars` string, required: Fixed-point US dollar string. Most request fields accept 2-4 decimal places (e.g., "0.56", "0.5600"); responses emit up to 6. Valid quote intervals for a given market are constrained by that market's price level structure.
      - `volume_fp` string, required: Fixed-point contract count string (2 decimals, e.g., "10.00"; referred to as "fp" in field names). Requests accept 0-2 decimal places (e.g., "10", "10.0", "10.00"); responses always emit 2 decimals. Fractional contract values (e.g., "2.50") are supported; the minimum granularity is 0.01 contracts.
      - `volume_24h_fp` string, required: Fixed-point contract count string (2 decimals, e.g., "10.00"; referred to as "fp" in field names). Requests accept 0-2 decimal places (e.g., "10", "10.0", "10.00"); responses always emit 2 decimals. Fractional contract values (e.g., "2.50") are supported; the minimum granularity is 0.01 contracts.
      - `result` 'yes' | 'no' | 'scalar' | '', required
      - `can_close_early` boolean, required
      - `open_interest_fp` string, required: Fixed-point contract count string (2 decimals, e.g., "10.00"; referred to as "fp" in field names). Requests accept 0-2 decimal places (e.g., "10", "10.0", "10.00"); responses always emit 2 decimals. Fractional contract values (e.g., "2.50") are supported; the minimum granularity is 0.01 contracts.
      - `notional_value_dollars` string, required: Fixed-point US dollar string. Most request fields accept 2-4 decimal places (e.g., "0.56", "0.5600"); responses emit up to 6. Valid quote intervals for a given market are constrained by that market's price level structure.
      - `previous_yes_bid_dollars` string, required: Fixed-point US dollar string. Most request fields accept 2-4 decimal places (e.g., "0.56", "0.5600"); responses emit up to 6. Valid quote intervals for a given market are constrained by that market's price level structure.
      - `previous_yes_ask_dollars` string, required: Fixed-point US dollar string. Most request fields accept 2-4 decimal places (e.g., "0.56", "0.5600"); responses emit up to 6. Valid quote intervals for a given market are constrained by that market's price level structure.
      - `previous_price_dollars` string, required: Fixed-point US dollar string. Most request fields accept 2-4 decimal places (e.g., "0.56", "0.5600"); responses emit up to 6. Valid quote intervals for a given market are constrained by that market's price level structure.
      - `settlement_value_dollars` string: Fixed-point US dollar string. Most request fields accept 2-4 decimal places (e.g., "0.56", "0.5600"); responses emit up to 6. Valid quote intervals for a given market are constrained by that market's price level structure.
      - `settlement_ts` string, date-time, nullable: Timestamp when the market was settled. Only filled for settled markets
      - `settlement_bounds_type` 'default' | 'floor', required: Which settlement bounds apply to this market. default means the market has no settlement bounds
      - `settlement_floor_dollars` string: Fixed-point US dollar string. Most request fields accept 2-4 decimal places (e.g., "0.56", "0.5600"); responses emit up to 6. Valid quote intervals for a given market are constrained by that market's price level structure.
      - `expiration_value` string, required: The value that was considered for the settlement
      - `occurrence_datetime` string, date-time, nullable: The recorded datetime when the underlying event occurred, if available
      - `fee_waiver_expiration_time` string, date-time, nullable: Time when this market's fee waiver expires
      - `early_close_condition` string, nullable: The condition under which the market can close early
      - `strike_type` 'greater' | 'greater_or_equal' | 'less' | 'less_or_equal' | 'between' | 'functional' | 'custom' | 'structured': Strike type defines how the market strike is defined and evaluated
      - `floor_strike` number, double, nullable: Minimum expiration value that leads to a YES settlement
      - `cap_strike` number, double, nullable: Maximum expiration value that leads to a YES settlement
      - `functional_strike` string, nullable: Mapping from expiration values to settlement values
      - `custom_strike` object, nullable: Expiration value for each target that leads to a YES settlement
      - `rules_primary` string, required: A plain language description of the most important market terms
      - `rules_secondary` string, required: A plain language description of secondary market terms
      - `mve_collection_ticker` string: The ticker of the multivariate event collection
      - `mve_selected_legs` MveSelectedLeg[]
        - `event_ticker` string: Unique identifier for the selected event
        - `market_ticker` string: Unique identifier for the selected market
        - `side` string: The side of the selected market
        - `yes_settlement_value_dollars` string: Fixed-point US dollar string. Most request fields accept 2-4 decimal places (e.g., "0.56", "0.5600"); responses emit up to 6. Valid quote intervals for a given market are constrained by that market's price level structure.
      - `primary_participant_key` string, nullable
      - `price_level_structure` string, required: Price level structure for this market, defining price ranges and tick sizes
      - `price_ranges` PriceRange[], required: Valid price ranges for orders on this market
        - `start` string, required: Starting price for this range in dollars
        - `end` string, required: Ending price for this range in dollars
        - `step` string, required: Price step/tick size for this range in dollars
      - `is_provisional` boolean: If true, the market may be removed after determination if there is no activity on it
      - `exchange_index` integer: Identifier for an exchange shard.
    - `product_metadata` object, nullable: Additional metadata for the event.
    - `settlement_sources` SettlementSource[], nullable, required: The official sources used for the determination of markets within this event. Methodology is defined in the rulebook.
      - `name` string: Name of the settlement source
      - `url` string: URL to the settlement source
    - `last_updated_ts` string, date-time: Timestamp of when this event's metadata was last updated.
    - `fee_type_override` string, nullable: Fee type override for this event. When present, takes precedence over the series-level fee for this event's markets.
    - `fee_multiplier_override` number, double, nullable: Fee multiplier override for this event. Paired with fee_type_override.
    - `exchange_index` integer: Identifier for an exchange shard.
  - `cursor` string, required: Pagination cursor for the next page. Empty if there are no more results.

## Other responses

- `400`: Bad request - invalid parameters
- `401`: Unauthorized
- `500`: Internal server error

## Changes

- **2026-11-02** `e6691cdd1915`: 1 info
  - response property `events/items/markets/items/no_sub_title` deprecated
- **2026-10-15** `3877d38d095f`: 1 info
  - added the new optional `query` request parameter `tickers`
- **2026-09-29** `dde105932d49`: 2 info
  - added the optional property `events/items/markets/items/settlement_floor_dollars` to the response with the `200` status
  - added the required property `events/items/markets/items/settlement_bounds_type` to the response with the `200` status
- **2026-09-25** `7a870e939ec6`: 1 warning
  - removed the optional property `events/items/markets/items/liquidity_dollars` from the response with the `200` status
- **2026-09-05** `1aea311542d8`: 1 breaking
  - removed the required property `events/items/available_on_brokers` from the response with the `200` status

[Operation history](https://skmtc.dev/kalshi/apis/kalshi-trade-api-manual-endpoints/changes/events/multivariate/get.md)

---

[API](https://skmtc.dev/kalshi/apis/kalshi-trade-api-manual-endpoints.md) - [All operations](https://skmtc.dev/kalshi/apis/kalshi-trade-api-manual-endpoints/llms.txt) - [OpenAPI document](https://skmtc.dev/kalshi/apis/kalshi-trade-api-manual-endpoints/revisions/e6691cdd1915?raw)
