Kalshi market API
The market API from Kalshi — 9 operation(s) for market.
The market API from Kalshi — 9 operation(s) for market.
Every API here is available over the APIs.io API and to AI agents over MCP.
One button, every client — Claude, Cursor, VS Code and the rest.
https://apis.io/mcp
find_apisBrowse and filter every API in the catalog.get_api_artifactsOne API's artifacts, grouped by type.get_openapiThe primary OpenAPI for this API.find_similar_apisAPIs that look like this one.apis_io_searchSTART HERE — APIs, providers and tags for one query, each with its total.resolveTurn a domain, URL or GitHub org into the provider it belongs to.find_cohortsEvery scored population of providers in the catalog.curl "https://apis.io/api/v1/apis/kalshi-market-api"
curl "https://apis.io/api/v1/apis?limit=25"
Discovery needs no key. Ratings and market analysis are Pro.
Free tier, no form to fill in. Signing in shares your email address with us — we store it to create your key and to recognise you if you sign in with another provider. See our Privacy Policy and Terms.
A second provider on the same verified email joins the account you already have.
openapi: 3.2.0
info:
title: Kalshi Trade API Manual Endpoints account Market API
version: 3.19.0
description: Manually defined OpenAPI spec for endpoints being migrated to spec-first approach
servers:
- url: https://external-api.kalshi.com/trade-api/v2
description: Production Trade API server
- url: https://api.elections.kalshi.com/trade-api/v2
description: Production shared API server, also supported
- url: https://external-api.demo.kalshi.co/trade-api/v2
description: Demo Trade API server
- url: https://demo-api.kalshi.co/trade-api/v2
description: Demo shared API server, also supported
tags:
- name: market
paths:
/series/{series_ticker}/markets/{ticker}/candlesticks:
get:
operationId: GetMarketCandlesticks
summary: Get Market Candlesticks
description: 'Time period length of each candlestick in minutes. Valid values: 1 (1 minute), 60 (1 hour), 1440 (1 day).
Candlesticks for markets that settled before the historical cutoff are only available via `GET /historical/markets/{ticker}/candlesticks`. See [Historical Data](https://docs.kalshi.com/getting_started/historical_data) for details.
'
tags:
- market
parameters:
- name: series_ticker
in: path
required: true
description: Series ticker - the series that contains the target market
schema:
type: string
- name: ticker
in: path
required: true
description: Market ticker - unique identifier for the specific market
schema:
type: string
- name: start_ts
in: query
required: true
description: Start timestamp (Unix timestamp). Candlesticks will include those ending on or after this time.
schema:
type: integer
format: int64
- name: end_ts
in: query
required: true
description: End timestamp (Unix timestamp). Candlesticks will include those ending on or before this time.
schema:
type: integer
format: int64
- name: period_interval
in: query
required: true
description: Time period length of each candlestick in minutes. Valid values are 1 (1 minute), 60 (1 hour), or 1440 (1 day).
schema:
type: integer
enum:
- 1
- 60
- 1440
x-oapi-codegen-extra-tags:
validate: required,oneof=1 60 1440
- name: include_latest_before_start
in: query
required: false
description: 'If true, prepends the latest candlestick available before the start_ts. This synthetic candlestick is created by:
1. Finding the most recent real candlestick before start_ts
2. Projecting it forward to the first period boundary (calculated as the next period interval after start_ts)
3. Setting all OHLC prices to null, and `previous_price` to the close price from the real candlestick
'
schema:
type: boolean
default: false
responses:
'200':
description: Candlesticks retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/GetMarketCandlesticksResponse'
'400':
description: Bad request
'404':
description: Not found
'500':
description: Internal server error
/markets/trades:
get:
operationId: GetTrades
summary: Get Trades
description: 'Endpoint for getting all trades for all markets. A trade represents a completed transaction between two users on a specific market. Each trade includes the market ticker, price, quantity, and timestamp information. This endpoint returns a paginated response. Use the ''limit'' parameter to control page size (1-1000, defaults to 100). The response includes a ''cursor'' field - pass this value in the ''cursor'' parameter of your next request to get the next page. An empty cursor indicates no more pages are available.
'
tags:
- market
parameters:
- $ref: '#/components/parameters/MarketLimitQuery'
- $ref: '#/components/parameters/CursorQuery'
- $ref: '#/components/parameters/TickerQuery'
- $ref: '#/components/parameters/MinTsQuery'
- $ref: '#/components/parameters/MaxTsQuery'
responses:
'200':
description: Trades retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/GetTradesResponse'
'400':
description: Bad request
'500':
description: Internal server error
/markets/{ticker}/orderbook:
get:
operationId: GetMarketOrderbook
summary: Get Market Orderbook
description: ' Endpoint for getting the current order book for a specific market. The order book shows all active bid orders for both yes and no sides of a binary market. It returns yes bids and no bids only (no asks are returned). This is because in binary markets, a bid for yes at price X is equivalent to an ask for no at price (100-X). For example, a yes bid at 7¢ is the same as a no ask at 93¢, with identical contract sizes. Each side shows price levels with their corresponding quantities and order counts, organized from best to worst prices.'
tags:
- market
security:
- kalshiAccessKey: []
kalshiAccessSignature: []
kalshiAccessTimestamp: []
parameters:
- $ref: '#/components/parameters/TickerPath'
- name: depth
in: query
description: Depth of the orderbook to retrieve (0 or negative means all levels, 1-100 for specific depth)
required: false
schema:
type: integer
minimum: 0
maximum: 100
default: 0
x-oapi-codegen-extra-tags:
validate: omitempty,min=0,max=100
responses:
'200':
description: Orderbook retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/GetMarketOrderbookResponse'
'401':
$ref: '#/components/responses/UnauthorizedError'
'404':
$ref: '#/components/responses/NotFoundError'
'500':
$ref: '#/components/responses/InternalServerError'
/markets/orderbooks:
get:
operationId: GetMarketOrderbooks
summary: Get Multiple Market Orderbooks
description: Endpoint for getting the current order books for multiple markets in a single request. The order book shows all active bid orders for both yes and no sides of a binary market. It returns yes bids and no bids only (no asks are returned). This is because in binary markets, a bid for yes at price X is equivalent to an ask for no at price (100-X). For example, a yes bid at 7¢ is the same as a no ask at 93¢, with identical contract sizes. Each side shows price levels with their corresponding quantities and order counts, organized from best to worst prices. Returns one orderbook per requested market ticker.
tags:
- market
security:
- kalshiAccessKey: []
kalshiAccessSignature: []
kalshiAccessTimestamp: []
parameters:
- name: tickers
in: query
required: true
description: List of market tickers to fetch orderbooks for
schema:
type: array
items:
type: string
maxLength: 200
minItems: 1
maxItems: 100
style: form
explode: true
x-oapi-codegen-extra-tags:
validate: required,min=1,max=100,dive,max=200
responses:
'200':
description: Orderbooks retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/GetMarketOrderbooksResponse'
'400':
$ref: '#/components/responses/BadRequestError'
'401':
$ref: '#/components/responses/UnauthorizedError'
'500':
$ref: '#/components/responses/InternalServerError'
/series/{series_ticker}:
get:
operationId: GetSeries
summary: Get Series
description: ' Endpoint for getting data about a specific series by its ticker. A series represents a template for recurring events that follow the same format and rules (e.g., "Monthly Jobs Report", "Weekly Initial Jobless Claims", "Daily Weather in NYC"). Series define the structure, settlement sources, and metadata that will be applied to each recurring event instance within that series.'
tags:
- market
parameters:
- name: series_ticker
in: path
required: true
schema:
type: string
description: The ticker of the series to retrieve
- name: include_volume
in: query
required: false
schema:
type: boolean
default: false
x-go-type-skip-optional-pointer: true
description: If true, includes the total volume traded across all events in this series.
responses:
'200':
description: Series retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/GetSeriesResponse'
'400':
$ref: '#/components/responses/BadRequestError'
'500':
$ref: '#/components/responses/InternalServerError'
/series:
get:
operationId: GetSeriesList
summary: Get Series List
description: ' Endpoint for getting data about multiple series with specified filters. A series represents a template for recurring events that follow the same format and rules (e.g., "Monthly Jobs Report", "Weekly Initial Jobless Claims", "Daily Weather in NYC"). This endpoint allows you to browse and discover available series templates by category.'
tags:
- market
parameters:
- name: category
in: query
required: false
schema:
type: string
x-go-type-skip-optional-pointer: true
- name: tags
in: query
required: false
schema:
type: string
x-go-type-skip-optional-pointer: true
- name: include_product_metadata
in: query
required: false
schema:
type: boolean
default: false
x-go-type-skip-optional-pointer: true
- name: include_volume
in: query
required: false
schema:
type: boolean
default: false
x-go-type-skip-optional-pointer: true
description: If true, includes the total volume traded across all events in each series.
- name: min_updated_ts
in: query
required: false
description: Filter series with metadata updated after this Unix timestamp (in seconds). Use this to efficiently poll for changes.
schema:
type: integer
format: int64
responses:
'200':
description: Series list retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/GetSeriesListResponse'
'400':
$ref: '#/components/responses/BadRequestError'
'500':
$ref: '#/components/responses/InternalServerError'
/markets:
get:
operationId: GetMarkets
summary: Get Markets
description: "Filter by market status. Possible values: `unopened`, `open`, `closed`, `settled`. Leave empty to return markets with any status.\n - Only one `status` filter may be supplied at a time.\n - Timestamp filters will be mutually exclusive from other timestamp filters and certain status filters.\n\n | Compatible Timestamp Filters | Additional Status Filters| Extra Notes |\n |------------------------------|--------------------------|-------------|\n | min_created_ts, max_created_ts | `unopened`, `open`, *empty* | |\n | min_close_ts, max_close_ts | `closed`, *empty* | |\n | min_settled_ts, max_settled_ts | `settled`, *empty* | |\n | min_updated_ts | *empty* | Incompatible with all filters besides `mve_filter=exclude` |\n\n Markets that settled before the historical cutoff are only available via `GET /historical/markets`. See [Historical Data](https://docs.kalshi.com/getting_started/historical_data) for details.\n"
tags:
- market
parameters:
- $ref: '#/components/parameters/MarketLimitQuery'
- $ref: '#/components/parameters/CursorQuery'
- $ref: '#/components/parameters/SingleEventTickerQuery'
- $ref: '#/components/parameters/SeriesTickerQuery'
- $ref: '#/components/parameters/MinCreatedTsQuery'
- $ref: '#/components/parameters/MaxCreatedTsQuery'
- $ref: '#/components/parameters/MinUpdatedTsQuery'
- $ref: '#/components/parameters/MaxCloseTsQuery'
- $ref: '#/components/parameters/MinCloseTsQuery'
- $ref: '#/components/parameters/MinSettledTsQuery'
- $ref: '#/components/parameters/MaxSettledTsQuery'
- $ref: '#/components/parameters/MarketStatusQuery'
- $ref: '#/components/parameters/TickersQuery'
- $ref: '#/components/parameters/MveFilterQuery'
responses:
'200':
description: Markets retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/GetMarketsResponse'
'400':
description: Bad request
'401':
description: Unauthorized
'500':
description: Internal server error
/markets/{ticker}:
get:
operationId: GetMarket
summary: Get Market
description: ' Endpoint for getting data about a specific market by its ticker. A market represents a specific binary outcome within an event that users can trade on (e.g., "Will candidate X win?"). Markets have yes/no positions, current prices, volume, and settlement rules.'
tags:
- market
parameters:
- $ref: '#/components/parameters/TickerPath'
responses:
'200':
description: Market retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/GetMarketResponse'
'401':
description: Unauthorized
'404':
description: Not found
'500':
description: Internal server error
/markets/candlesticks:
get:
operationId: BatchGetMarketCandlesticks
summary: Batch Get Market Candlesticks
description: 'Endpoint for retrieving candlestick data for multiple markets.
- Accepts up to 100 market tickers per request
- Returns up to 10,000 candlesticks total across all markets
- Returns candlesticks grouped by market_id
- Optionally includes a synthetic initial candlestick for price continuity (see `include_latest_before_start` parameter)
'
tags:
- market
parameters:
- name: market_tickers
in: query
required: true
description: Comma-separated list of market tickers (maximum 100)
schema:
type: string
- name: start_ts
in: query
required: true
description: Start timestamp in Unix seconds
schema:
type: integer
format: int64
- name: end_ts
in: query
required: true
description: End timestamp in Unix seconds
schema:
type: integer
format: int64
- name: period_interval
in: query
required: true
description: Candlestick period interval in minutes
schema:
type: integer
format: int32
minimum: 1
- name: include_latest_before_start
in: query
required: false
description: 'If true, prepends the latest candlestick available before the start_ts. This synthetic candlestick is created by:
1. Finding the most recent real candlestick before start_ts
2. Projecting it forward to the first period boundary (calculated as the next period interval after start_ts)
3. Setting all OHLC prices to null, and `previous_price` to the close price from the real candlestick
'
schema:
type: boolean
default: false
responses:
'200':
description: Market candlesticks retrieved successfully
content:
application/json:
schema:
$ref: '#/components/schemas/BatchGetMarketCandlesticksResponse'
'400':
description: Bad request
'401':
description: Unauthorized
'500':
description: Internal server error
components:
schemas:
Market:
type: object
required:
- ticker
- event_ticker
- market_type
- yes_sub_title
- no_sub_title
- created_time
- updated_time
- open_time
- close_time
- latest_expiration_time
- settlement_timer_seconds
- status
- notional_value_dollars
- yes_bid_dollars
- yes_ask_dollars
- no_bid_dollars
- no_ask_dollars
- yes_bid_size_fp
- yes_ask_size_fp
- last_price_dollars
- previous_yes_bid_dollars
- previous_yes_ask_dollars
- previous_price_dollars
- volume_fp
- volume_24h_fp
- liquidity_dollars
- open_interest_fp
- result
- can_close_early
- fractional_trading_enabled
- expiration_value
- rules_primary
- rules_secondary
- price_level_structure
- price_ranges
properties:
ticker:
type: string
event_ticker:
type: string
market_type:
type: string
enum:
- binary
- scalar
description: Identifies the type of market
title:
type: string
deprecated: true
x-go-type-skip-optional-pointer: true
subtitle:
type: string
deprecated: true
x-go-type-skip-optional-pointer: true
yes_sub_title:
type: string
description: Shortened title for the yes side of this market
no_sub_title:
type: string
description: Shortened title for the no side of this market
created_time:
type: string
format: date-time
updated_time:
type: string
format: date-time
description: Time of the last non-trading metadata update.
open_time:
type: string
format: date-time
close_time:
type: string
format: date-time
expected_expiration_time:
type:
- string
- 'null'
format: date-time
x-omitempty: true
description: Time when this market is expected to expire
expiration_time:
type: string
format: date-time
deprecated: true
x-go-type-skip-optional-pointer: true
latest_expiration_time:
type: string
format: date-time
description: Latest possible time for this market to expire
settlement_timer_seconds:
type: integer
description: The amount of time after determination that the market settles
status:
type: string
enum:
- initialized
- inactive
- active
- closed
- determined
- disputed
- amended
- finalized
description: The current status of the market in its lifecycle.
response_price_units:
type: string
enum:
- usd_cent
deprecated: true
description: 'DEPRECATED: Use price_level_structure and price_ranges instead.'
x-go-type-skip-optional-pointer: true
yes_bid_dollars:
$ref: '#/components/schemas/FixedPointDollars'
description: Price for the highest YES buy offer on this market in dollars
yes_bid_size_fp:
$ref: '#/components/schemas/FixedPointCount'
description: Total contract size of orders to buy YES at the best bid price (fixed-point count string).
yes_ask_dollars:
$ref: '#/components/schemas/FixedPointDollars'
description: Price for the lowest YES sell offer on this market in dollars
yes_ask_size_fp:
$ref: '#/components/schemas/FixedPointCount'
description: Total contract size of orders to sell YES at the best ask price (fixed-point count string).
no_bid_dollars:
$ref: '#/components/schemas/FixedPointDollars'
description: Price for the highest NO buy offer on this market in dollars
no_ask_dollars:
$ref: '#/components/schemas/FixedPointDollars'
description: Price for the lowest NO sell offer on this market in dollars
last_price_dollars:
$ref: '#/components/schemas/FixedPointDollars'
description: Price for the last traded YES contract on this market in dollars
volume_fp:
$ref: '#/components/schemas/FixedPointCount'
description: String representation of the market volume in contracts
volume_24h_fp:
$ref: '#/components/schemas/FixedPointCount'
description: String representation of the 24h market volume in contracts
result:
type: string
enum:
- 'yes'
- 'no'
- scalar
- ''
can_close_early:
type: boolean
fractional_trading_enabled:
type: boolean
deprecated: true
description: Deprecated. This flag is always `true` and carries no information. Will be removed after a pre-announcement with the removal date.
open_interest_fp:
$ref: '#/components/schemas/FixedPointCount'
description: String representation of the number of contracts bought on this market disconsidering netting
notional_value_dollars:
$ref: '#/components/schemas/FixedPointDollars'
description: The total value of a single contract at settlement in dollars
previous_yes_bid_dollars:
$ref: '#/components/schemas/FixedPointDollars'
description: Price for the highest YES buy offer on this market a day ago in dollars
previous_yes_ask_dollars:
$ref: '#/components/schemas/FixedPointDollars'
description: Price for the lowest YES sell offer on this market a day ago in dollars
previous_price_dollars:
$ref: '#/components/schemas/FixedPointDollars'
description: Price for the last traded YES contract on this market a day ago in dollars
liquidity_dollars:
$ref: '#/components/schemas/FixedPointDollars'
deprecated: true
description: 'DEPRECATED: This field is deprecated and will always return "0.0000".'
settlement_value_dollars:
$ref: '#/components/schemas/FixedPointDollars'
x-omitempty: true
description: The settlement value of the YES/LONG side of the contract in dollars. Only filled after determination
settlement_ts:
type:
- string
- 'null'
format: date-time
x-omitempty: true
description: Timestamp when the market was settled. Only filled for settled markets
expiration_value:
type: string
description: The value that was considered for the settlement
occurrence_datetime:
type:
- string
- 'null'
format: date-time
description: The recorded datetime when the underlying event occurred, if available
fee_waiver_expiration_time:
type:
- string
- 'null'
format: date-time
x-omitempty: true
description: Time when this market's fee waiver expires
early_close_condition:
type:
- string
- 'null'
x-omitempty: true
description: The condition under which the market can close early
x-go-type-skip-optional-pointer: true
strike_type:
type: string
enum:
- greater
- greater_or_equal
- less
- less_or_equal
- between
- functional
- custom
- structured
x-omitempty: true
description: Strike type defines how the market strike is defined and evaluated
x-go-type-skip-optional-pointer: true
floor_strike:
type:
- number
- 'null'
format: double
x-omitempty: true
description: Minimum expiration value that leads to a YES settlement
cap_strike:
type:
- number
- 'null'
format: double
x-omitempty: true
description: Maximum expiration value that leads to a YES settlement
functional_strike:
type:
- string
- 'null'
x-omitempty: true
description: Mapping from expiration values to settlement values
custom_strike:
type:
- object
- 'null'
x-omitempty: true
description: Expiration value for each target that leads to a YES settlement
rules_primary:
type: string
description: A plain language description of the most important market terms
rules_secondary:
type: string
description: A plain language description of secondary market terms
mve_collection_ticker:
type: string
x-omitempty: true
description: The ticker of the multivariate event collection
x-go-type-skip-optional-pointer: true
mve_selected_legs:
type: array
x-omitempty: true
items:
$ref: '#/components/schemas/MveSelectedLeg'
x-go-type-skip-optional-pointer: true
primary_participant_key:
type:
- string
- 'null'
x-omitempty: true
price_level_structure:
type: string
description: Price level structure for this market, defining price ranges and tick sizes
price_ranges:
type: array
description: Valid price ranges for orders on this market
items:
$ref: '#/components/schemas/PriceRange'
is_provisional:
type: boolean
x-omitempty: true
description: If true, the market may be removed after determination if there is no activity on it
x-go-type-skip-optional-pointer: true
exchange_index:
allOf:
- $ref: '#/components/schemas/ExchangeIndex'
x-go-type-skip-optional-pointer: true
BatchGetMarketCandlesticksResponse:
type: object
required:
- markets
properties:
markets:
type: array
description: Array of market candlestick data, one entry per requested market.
items:
$ref: '#/components/schemas/MarketCandlesticksResponse'
MarketCandlestick:
type: object
required:
- end_period_ts
- yes_bid
- yes_ask
- price
- volume_fp
- open_interest_fp
properties:
end_period_ts:
type: integer
format: int64
description: Unix timestamp for the inclusive end of the candlestick period.
yes_bid:
$ref: '#/components/schemas/BidAskDistribution'
description: Open, high, low, close (OHLC) data for YES buy offers on the market during the candlestick period.
yes_ask:
$ref: '#/components/schemas/BidAskDistribution'
description: Open, high, low, close (OHLC) data for YES sell offers on the market during the candlestick period.
price:
$ref: '#/components/schemas/PriceDistribution'
description: Open, high, low, close (OHLC) and more data for trade YES contract prices on the market during the candlestick period.
volume_fp:
$ref: '#/components/schemas/FixedPointCount'
description: String representation of the number of contracts bought on the market during the candlestick period.
open_interest_fp:
$ref: '#/components/schemas/FixedPointCount'
description: String representation of the number of contracts bought on the market by end of the candlestick period (end_period_ts).
GetMarketsResponse:
type: object
required:
- markets
- cursor
properties:
markets:
type: array
items:
$ref: '#/components/schemas/Market'
cursor:
type: string
FixedPointDollars:
type: string
description: US dollar amount as a fixed-point decimal string with up to 6 decimal places of precision. This is the maximum supported precision; valid quote intervals for a given market are constrained by that market's price level structure.
example: '0.5600'
BookSide:
type: string
enum:
- bid
- ask
description: 'Side of the book for an order or trade. For event markets, this refers to the YES leg only: `bid` means buy YES, `ask` means sell YES. (Selling YES is economically equivalent to buying NO at `1 - price`, but this endpoint quotes everything from the YES side.)'
BidAskDistribution:
type: object
required:
- open_dollars
- low_dollars
- high_dollars
- close_dollars
properties:
open_dollars:
$ref: '#/components/schemas/FixedPointDollars'
description: Offer price on the market at the start of the candlestick period (in dollars).
low_dollars:
$ref: '#/components/schemas/FixedPointDollars'
description: Lowest offer price on the market during the candlestick period (in dollars).
high_dollars:
$ref: '#/components/schemas/FixedPointDollars'
description: Highest offer price on the market during the candlestick period (in dollars).
close_dollars:
$ref: '#/components/schemas/FixedPointDollars'
description: Offer price on the market at the end of the candlestick period (in dollars).
PriceLevelDollarsCountFp:
type: array
minItems: 2
maxItems: 2
example:
- '0.1500'
- '100.00'
items:
type: string
description: Price level in dollars represented as [dollars_string, fp] where dollars_string is like "0.1500" and fp is a FixedPointCount string (fixed-point contract count). The second element is the contract quantity (not price).
GetTradesResponse:
type: object
required:
- trades
- cursor
properties:
trades:
type: array
items:
$ref: '#/components/schemas/Trade'
cursor:
type: string
OrderbookCountFp:
type: object
required:
- yes_dollars
- no_dollars
properties:
yes_dollars:
type: array
items:
$ref: '#/components/schemas/PriceLevelDollarsCountFp'
no_dollars:
type: array
items:
$ref: '#/components/schemas/PriceLevelDollarsCountFp'
description: Orderbook with fixed-point contract counts (fp) in all dollar price levels.
GetSeriesListResponse:
type: object
required:
- series
properties:
series:
type: array
items:
$ref: '#/components/schemas/Series'
ErrorResponse:
type: object
properties:
code:
type: string
description: Error code
message:
type: string
description: Human-readable error message
details:
type: string
description: Additional details about the error, if available
service:
type: string
description: The name of the service that generated the error
GetMarketCandlesticksResponse:
type: object
required:
- ticker
- candlesticks
properties:
ticker:
type: string
description: Unique identifier for the market.
candlesticks:
type: array
description: Array of candlestick data points for the specified time range.
items:
$ref: '#/components/schemas/MarketCandlestick'
MarketCandlest
# --- truncated at 32 KB (48 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/kalshi/refs/heads/main/openapi/kalshi-market-api-openapi.yml