Kalshi
Kalshi is a CFTC-regulated US exchange for binary event contracts on real-world outcomes - elections, economics, weather, sports, and more. The platform exposes a public REST trading API and WebSocket streams for market data, orders, positions, and portfolio actions, with a published OpenAPI 3 specification and AsyncAPI definition for the streaming surface. A demo environment mirrors production for safe development. Official Python and community SDKs are provided.
APIs
Kalshi Trade API (REST)
Public REST API for trading on Kalshi - browse markets, events, and series, place and cancel orders, manage portfolio and positions, fund and withdraw, and pull historical trade...
Kalshi Trade API (external-api host)
Alternate production host for the Kalshi Trade API, used by external integrators. Same API surface and authentication as the primary host.
Kalshi Trade API (Demo)
Demo / sandbox environment for the Kalshi Trade API - mirrors production semantics with simulated balances and markets for safe development and automated testing.
Kalshi WebSocket Streaming API
Real-time streaming feed for market data, order book updates, fills, and portfolio events on Kalshi. Documented as an AsyncAPI spec alongside the OpenAPI REST surface.
Kalshi OpenAPI Specification
Machine-readable OpenAPI 3 description of the Kalshi Trade REST API. Suitable for generating clients, mocks, and contract tests.
Kalshi AsyncAPI Specification
Machine-readable AsyncAPI description of the Kalshi WebSocket streaming API. Suitable for generating async clients and documenting message schemas.
Kalshi Python Starter Kit
Official Python starter / SDK published by Kalshi for connecting to the Trade REST API and WebSocket streams. Includes request signing, authentication helpers, and example tradi...
Collections
Pricing Plans
Rate Limits
FinOps
Kalshi Finops
FINOPSEvent Specifications
Kalshi WebSocket Streaming API
Real-time WebSocket streaming feed for the Kalshi CFTC-regulated event contracts exchange. Publishes orderbook updates, public trades, market tickers, user orders, user fills, m...
ASYNCAPIResources
Sources
opencollection: 1.0.0
info:
name: Kalshi Trade API Manual Endpoints
version: 3.19.0
items:
- info:
name: exchange
type: folder
items:
- info:
name: Get Exchange Status
type: http
http:
method: GET
url: https://external-api.kalshi.com/trade-api/v2/exchange/status
docs: ' Endpoint for getting the exchange status.'
- info:
name: Get Exchange Announcements
type: http
http:
method: GET
url: https://external-api.kalshi.com/trade-api/v2/exchange/announcements
docs: ' Endpoint for getting all exchange-wide announcements.'
- info:
name: Get Series Fee Changes
type: http
http:
method: GET
url: https://external-api.kalshi.com/trade-api/v2/series/fee_changes
params:
- name: series_ticker
value: ''
type: query
- name: show_historical
value: ''
type: query
docs: Get Series Fee Changes
- info:
name: Get Exchange Schedule
type: http
http:
method: GET
url: https://external-api.kalshi.com/trade-api/v2/exchange/schedule
docs: ' Endpoint for getting the exchange schedule.'
- info:
name: Get User Data Timestamp
type: http
http:
method: GET
url: https://external-api.kalshi.com/trade-api/v2/exchange/user_data_timestamp
docs: ' There is typically a short delay before exchange events are reflected in the API endpoints. Whenever possible,
combine API responses to PUT/POST/DELETE requests with websocket data to obtain the most accurate view of the exchange
state. This endpoint provides an approximate indication of when the data from the following endpoints was last validated:
GetBalance, GetOrder(s), GetFills, GetPositions'
- info:
name: market
type: folder
items:
- info:
name: Get Market Candlesticks
type: http
http:
method: GET
url: https://external-api.kalshi.com/trade-api/v2/series/:series_ticker/markets/:ticker/candlesticks
params:
- name: series_ticker
value: ''
type: path
description: Series ticker - the series that contains the target market
- name: ticker
value: ''
type: path
description: Market ticker - unique identifier for the specific market
- name: start_ts
value: ''
type: query
description: Start timestamp (Unix timestamp). Candlesticks will include those ending on or after this time.
- name: end_ts
value: ''
type: query
description: End timestamp (Unix timestamp). Candlesticks will include those ending on or before this time.
- name: period_interval
value: ''
type: query
description: Time period length of each candlestick in minutes. Valid values are 1 (1 minute), 60 (1 hour), or 1440
(1 day).
- name: include_latest_before_start
value: ''
type: query
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
'
docs: '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.
'
- info:
name: Get Trades
type: http
http:
method: GET
url: https://external-api.kalshi.com/trade-api/v2/markets/trades
params:
- name: limit
value: ''
type: query
description: Number of results per page. Defaults to 100. Maximum value is 1000.
- name: cursor
value: ''
type: query
description: Pagination cursor. Use the cursor value returned from the previous response to get the next page of results.
Leave empty for the first page.
- name: ticker
value: ''
type: query
description: Filter by market ticker
- name: min_ts
value: ''
type: query
description: Filter items after this Unix timestamp
- name: max_ts
value: ''
type: query
description: Filter items before this Unix timestamp
docs: 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 a
- info:
name: Get Market Orderbook
type: http
http:
method: GET
url: https://external-api.kalshi.com/trade-api/v2/markets/:ticker/orderbook
params:
- name: ticker
value: ''
type: path
description: Market ticker
- name: depth
value: ''
type: query
description: Depth of the orderbook to retrieve (0 or negative means all levels, 1-100 for specific depth)
auth:
type: apikey
key: KALSHI-ACCESS-KEY
value: '{{KALSHI-ACCESS-KEY}}'
placement: header
docs: ' 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 coun'
- info:
name: Get Multiple Market Orderbooks
type: http
http:
method: GET
url: https://external-api.kalshi.com/trade-api/v2/markets/orderbooks
params:
- name: tickers
value: ''
type: query
description: List of market tickers to fetch orderbooks for
auth:
type: apikey
key: KALSHI-ACCESS-KEY
value: '{{KALSHI-ACCESS-KEY}}'
placement: header
docs: 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 quantiti
- info:
name: Get Series
type: http
http:
method: GET
url: https://external-api.kalshi.com/trade-api/v2/series/:series_ticker
params:
- name: series_ticker
value: ''
type: path
description: The ticker of the series to retrieve
- name: include_volume
value: ''
type: query
description: If true, includes the total volume traded across all events in this series.
docs: ' 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.'
- info:
name: Get Series List
type: http
http:
method: GET
url: https://external-api.kalshi.com/trade-api/v2/series
params:
- name: category
value: ''
type: query
- name: tags
value: ''
type: query
- name: include_product_metadata
value: ''
type: query
- name: include_volume
value: ''
type: query
description: If true, includes the total volume traded across all events in each series.
- name: min_updated_ts
value: ''
type: query
description: Filter series with metadata updated after this Unix timestamp (in seconds). Use this to efficiently poll
for changes.
docs: ' 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.'
- info:
name: Get Markets
type: http
http:
method: GET
url: https://external-api.kalshi.com/trade-api/v2/markets
params:
- name: limit
value: ''
type: query
description: Number of results per page. Defaults to 100. Maximum value is 1000.
- name: cursor
value: ''
type: query
description: Pagination cursor. Use the cursor value returned from the previous response to get the next page of results.
Leave empty for the first page.
- name: event_ticker
value: ''
type: query
description: Event ticker to filter by. Only a single event ticker is supported.
- name: series_ticker
value: ''
type: query
description: Filter by series ticker
- name: min_created_ts
value: ''
type: query
description: Filter items that created after this Unix timestamp
- name: max_created_ts
value: ''
type: query
description: Filter items that created before this Unix timestamp
- name: min_updated_ts
value: ''
type: query
description: Return markets with metadata updated later than this Unix timestamp. Tracks non-trading changes only.
Incompatible with any other filters.
- name: max_close_ts
value: ''
type: query
description: Filter items that close before this Unix timestamp
- name: min_close_ts
value: ''
type: query
description: Filter items that close after this Unix timestamp
- name: min_settled_ts
value: ''
type: query
description: Filter items that settled after this Unix timestamp
- name: max_settled_ts
value: ''
type: query
description: Filter items that settled before this Unix timestamp
- name: status
value: ''
type: query
description: Filter by market status. Leave empty to return markets with any status.
- name: tickers
value: ''
type: query
description: Filter by specific market tickers. Comma-separated list of market tickers to retrieve.
- name: mve_filter
value: ''
type: query
description: Filter by multivariate events (combos). 'only' returns only multivariate events, 'exclude' excludes multivariate
events.
docs: "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`, *em"
- info:
name: Get Market
type: http
http:
method: GET
url: https://external-api.kalshi.com/trade-api/v2/markets/:ticker
params:
- name: ticker
value: ''
type: path
description: Market ticker
docs: ' 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.'
- info:
name: Batch Get Market Candlesticks
type: http
http:
method: GET
url: https://external-api.kalshi.com/trade-api/v2/markets/candlesticks
params:
- name: market_tickers
value: ''
type: query
description: Comma-separated list of market tickers (maximum 100)
- name: start_ts
value: ''
type: query
description: Start timestamp in Unix seconds
- name: end_ts
value: ''
type: query
description: End timestamp in Unix seconds
- name: period_interval
value: ''
type: query
description: Candlestick period interval in minutes
- name: include_latest_before_start
value: ''
type: query
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
'
docs: '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)
'
- info:
name: events
type: folder
items:
- info:
name: Get Event Candlesticks
type: http
http:
method: GET
url: https://external-api.kalshi.com/trade-api/v2/series/:series_ticker/events/:ticker/candlesticks
params:
- name: ticker
value: ''
type: path
description: The event ticker
- name: series_ticker
value: ''
type: path
description: The series ticker
- name: start_ts
value: ''
type: query
description: Start timestamp for the range
- name: end_ts
value: ''
type: query
description: End timestamp for the range
- name: period_interval
value: ''
type: query
description: Specifies the length of each candlestick period, in minutes. Must be one minute, one hour, or one day.
docs: ' End-point for returning aggregated data across all markets corresponding to an event.'
- info:
name: Get Events
type: http
http:
method: GET
url: https://external-api.kalshi.com/trade-api/v2/events
params:
- name: limit
value: ''
type: query
description: Parameter to specify the number of results per page. Defaults to 200. Maximum value is 200.
- name: cursor
value: ''
type: query
description: Parameter to specify the pagination cursor. Use the cursor value returned from the previous response
to get the next page of results. Leave empty for the first page.
- name: with_nested_markets
value: ''
type: query
description: Parameter to specify if nested markets should be included in the response. When true, each event will
include a 'markets' field containing a list of Market objects associated with that event. Historical markets settled
before the historical cutoff will not be included.
- name: with_milestones
value: ''
type: query
description: If true, includes related milestones as a field alongside events.
- name: status
value: ''
type: query
description: Filter by event status. Possible values are 'unopened', 'open', 'closed', 'settled'. Leave empty to return
events with any status.
- name: series_ticker
value: ''
type: query
description: Filter by series ticker
- name: min_close_ts
value: ''
type: query
description: Filter events with at least one market with close timestamp greater than this Unix timestamp (in seconds).
- name: min_updated_ts
value: ''
type: query
description: Filter events with metadata updated after this Unix timestamp (in seconds). Use this to efficiently poll
for changes.
docs: 'Get all events. This endpoint excludes multivariate events.
To retrieve multivariate events, use the GET /events/multivariate endpoint.
All events are accessible through this endpoint, even if their associated markets are older than the historical cutoff.
'
- info:
name: Get Multivariate Events
type: http
http:
method: GET
url: https://external-api.kalshi.com/trade-api/v2/events/multivariate
params:
- name: limit
value: ''
type: query
description: Number of results per page. Defaults to 100. Maximum value is 200.
- name: cursor
value: ''
type: query
description: Pagination cursor. Use the cursor value returned from the previous response to get the next page of results.
- name: series_ticker
value: ''
type: query
description: Filter by series ticker
- name: collection_ticker
value: ''
type: query
description: Filter events by collection ticker. Returns only multivariate events belonging to the specified collection.
Cannot be used together with series_ticker.
- name: with_nested_markets
value: ''
type: query
description: Parameter to specify if nested markets should be included in the response. When true, each event will
include a 'markets' field containing a list of Market objects associated with that event.
docs: Retrieve multivariate (combo) events. These are dynamically created events from multivariate event collections.
Supports filtering by series and collection ticker.
- info:
name: Get Event
type: http
http:
method: GET
url: https://external-api.kalshi.com/trade-api/v2/events/:event_ticker
params:
- name: event_ticker
value: ''
type: path
description: Event ticker
- name: with_nested_markets
value: ''
type: query
description: If true, markets are included within the event object. If false (default), markets are returned as a
separate top-level field in the response. Historical markets settled before the historical cutoff will not be included.
docs: 'Endpoint for getting data about an event by its ticker. An event represents a real-world occurrence that can be
traded on, such as an election, sports game, or economic indicator release.
Events contain one or more markets where users can place trades on different outcomes.
All events are accessible through this endpoint, even if their associated markets are older than the historical cutoff.
'
- info:
name: Get Event Metadata
type: http
http:
method: GET
url: https://external-api.kalshi.com/trade-api/v2/events/:event_ticker/metadata
params:
- name: event_ticker
value: ''
type: path
description: Event ticker
docs: ' Endpoint for getting metadata about an event by its ticker. Returns only the metadata information for an event.'
- info:
name: Get Event Forecast Percentile History
type: http
http:
method: GET
url: https://external-api.kalshi.com/trade-api/v2/series/:series_ticker/events/:ticker/forecast_percentile_history
params:
- name: ticker
value: ''
type: path
description: The event ticker
- name: series_ticker
value: ''
type: path
description: The series ticker
- name: percentiles
value: ''
type: query
description: Array of percentile values to retrieve (0-9999, max 10 values)
- name: start_ts
value: ''
type: query
description: Start timestamp for the range
- name: end_ts
value: ''
type: query
description: End timestamp for the range
- name: period_interval
value: ''
type: query
description: Specifies the length of each forecast period, in minutes. 0 for 5-second intervals, or 1, 60, or 1440
for minute-based intervals.
auth:
type: apikey
key: KALSHI-ACCESS-KEY
value: '{{KALSHI-ACCESS-KEY}}'
placement: header
docs: Endpoint for getting the historical raw and formatted forecast numbers for an event at specific percentiles.
- info:
name: orders
type: folder
items:
- info:
name: Get Orders
type: http
http:
method: GET
url: https://external-api.kalshi.com/trade-api/v2/portfolio/orders
params:
- name: ticker
value: ''
type: query
description: Filter by market ticker
- name: event_ticker
value: ''
type: query
description: Event tickers to filter by, as a comma-separated list (maximum 10).
- name: min_ts
value: ''
type: query
description: Filter items after this Unix timestamp
- name: max_ts
value: ''
type: query
description: Filter items before this Unix timestamp
- name: status
value: ''
type: query
description: Filter by status. Possible values depend on the endpoint.
- name: limit
value: ''
type: query
description: Number of results per page. Defaults to 100.
- name: cursor
value: ''
type: query
description: Pagination cursor. Use the cursor value returned from the previous response to get the next page of results.
Leave empty for the first page.
- name: subaccount
value: ''
type: query
description: Subaccount number (0 for primary, 1-32 for subaccounts). If omitted, defaults to all subaccounts.
auth:
type: apikey
key: KALSHI-ACCESS-KEY
value: '{{KALSHI-ACCESS-KEY}}'
placement: header
docs: 'Restricts the response to orders that have a certain status: resting, canceled, or executed.
Orders that have been canceled or fully executed before the historical cutoff are only available via `GET /historical/orders`.
Resting orders will always be available through this endpoint. See [Historical Data](https://docs.kalshi.com/getting_started/historical_data)
for details.
'
- info:
name: Create Order
type: http
http:
method: POST
url: https://external-api.kalshi.com/trade-api/v2/portfolio/orders
body:
type: json
data: '{}'
auth:
type: apikey
key: KALSHI-ACCESS-KEY
value: '{{KALSHI-ACCESS-KEY}}'
placement: header
docs: ' Endpoint for submitting orders in a market. Each user is limited to 200 000 open orders at a time.'
- info:
name: Get Order
type: http
http:
method: GET
url: https://external-api.kalshi.com/trade-api/v2/portfolio/orders/:order_id
params:
- name: order_id
value: ''
type: path
description: Order ID
auth:
type: apikey
key: KALSHI-ACCESS-KEY
value: '{{KALSHI-ACCESS-KEY}}'
placement: header
docs: ' Endpoint for getting a single order.'
- info:
name: Cancel Order
type: http
http:
method: DELETE
url: https://external-api.kalshi.com/trade-api/v2/portfolio/orders/:order_id
params:
- name: order_id
value: ''
type: path
description: Order ID
- name: subaccount
value: ''
type: query
description: Subaccount number (0 for primary, 1-32 for subaccounts). Defaults to 0.
- name: exchange_index
value: ''
type: query
auth:
type: apikey
key: KALSHI-ACCESS-KEY
value: '{{KALSHI-ACCESS-KEY}}'
placement: header
docs: ' Endpoint for canceling orders. The value for the orderId should match the id field of the order you want to decrease.
Commonly, DELETE-type endpoints return 204 status with no body content on success. But we can''t completely delete the
order, as it may be partially filled already. Instead, the DeleteOrder endpoint reduce the order completely, essentially
zeroing the remaining resting contracts on it. The zeroed order is returned on the response payload as a form of validation
for the client.'
- info:
name: Batch Create Orders
type: http
http:
method: POST
url: https://external-api.kalshi.com/trade-api/v2/portfolio/orders/batched
body:
type: json
data: '{}'
auth:
type: apikey
key: KALSHI-ACCESS-KEY
value: '{{KALSHI-ACCESS-KEY}}'
placement: header
docs: Endpoint for submitting a batch of orders. The maximum batch size scales with your tier's write budget — see [Rate
Limits and Tiers](/getting_started/rate_limits).
- info:
name: Batch Cancel Orders
type: http
http:
method: DELETE
url: https://external-api.kalshi.com/trade-api/v2/portfolio/orders/batched
body:
type: json
data: '{}'
auth:
type: apikey
key: KALSHI-ACCESS-KEY
value: '{{KALSHI-ACCESS-KEY}}'
placement: header
docs: Endpoint for cancelling a batch of orders. The maximum batch size scales with your tier's write budget — see [Rate
Limits and Tiers](/getting_started/rate_limits).
- info:
name: Amend Order
type: http
http:
method: POST
url: https://external-api.kalshi.com/trade-api/v2/portfolio/orders/:order_id/amend
params:
- name: order_id
value: ''
type: path
description: Order ID
body:
type: json
data: '{}'
auth:
type: apikey
key: KALSHI-ACCESS-KEY
value: '{{KALSHI-ACCESS-KEY}}'
placement: header
docs: ' Endpoint for amending the max number of fillable contracts and/or price in an existing order. Max fillable contracts
is `remaining_count` + `fill_count`.'
- info:
name: Decrease Order
type: http
http:
method: POST
url: https://external-api.kalshi.com/trade-api/v2/portfolio/orders/:order_id/decrease
params:
- name: order_id
value: ''
type: path
description: Order ID
body:
type: json
data: '{}'
auth:
type: apikey
key: KALSHI-ACCESS-KEY
value: '{{KALSHI-ACCESS-KEY}}'
placement: header
docs: ' Endpoint for decreasing the number of contracts in an existing order. This is the only kind of edit available
on order quantity. Cancelling an order is equivalent to decreasing an order amount to zero.'
- info:
name: Get Queue Positions for Orders
type: http
http:
method: GET
url: https://external-api.kalshi.com/trade-api/v2/portfolio/orders/queue_positions
params:
- name: market_tickers
value: ''
type: query
description: Comma-separated list of market tickers to filter by
- name: event_ticker
value: ''
type: query
description: Event ticker to filter by
- name: subaccount
value: ''
type: query
description: Subaccount number (0 for primary, 1-32 for subaccounts). Defaults to 0.
auth:
type: apikey
key: KALSHI-ACCESS-KEY
value: '{{KALSHI-ACCESS-KEY}}'
placement: header
docs: ' Endpoint for getting queue positions for all resting orders. Queue position represents the number of contracts
that need to be matched before an order receives a partial or full match, determined using price-time priority.'
- info:
name: Get Order Queue Position
type: http
http:
method: GET
url: https://external-api.kalshi.com/trade-api/v2/portfolio/orders/:order_id/queue_position
params:
- name: order_id
value: ''
type: path
description: Order ID
auth:
type: apikey
key: KALSHI-ACCESS-KEY
value: '{{KALSHI-ACCESS-KEY}}'
placement: header
docs: ' Endpoint for getting an order''s queue position in the order book. This represents the amount of orders that need
to be matched before this order receives a partial or full match. Queue position is determined using a price-time priority.'
- info:
name: Create Order (V2)
type: http
http:
method: POST
url: https://external-api.kalshi.com/trade-api/v2/portfolio/events/orders
body:
type: json
data: '{}'
auth:
type: apikey
key: KALSHI-ACCESS-KEY
value: '{{KALSHI-ACCESS-KEY}}'
placement: header
docs: Endpoint for submitting event-market orders using the V2 request/response shape (single-book `bid`/`ask` side and
fixed-point dollar prices). The legacy `/portfolio/orders` endpoint will be deprecated no earlier than May 6, 2026 —
clients should migrate to this path.
- info:
name: Batch Create Orders (V2)
type: http
http:
method: POST
url: https://external-api.kalshi.com/trade-api/v2/portfolio/events/orders/batched
body:
type: json
data: '{}'
auth:
type: apikey
key: KALSHI-ACCESS-KEY
value: '{{KALSHI-ACCESS-KEY}}'
placement: header
docs: Endpoint for submitting a batch of event-market orders using the V2 request/response shape. The maximum batch size
scales with your tier's write budget — see [Rate Limits and Tiers](/getting_started/rate_limits).
- info:
name: Batch Cancel Orders (V2)
type: http
http:
method: DELETE
url: https://external-api.kalshi.com/trade-api/v2/portfolio/events/orders/batched
body:
type: json
data: '{}'
auth:
type: apikey
key: KALSHI-ACCESS-KEY
value: '{{KALSHI-ACCESS-KEY}}'
placement: header
docs: Endpoint for cancelling a batch of event-market orders using the V2 response shape. The maximum batch size scales
with your tier's write budget — see [Rate Limits and Tiers](/getting_started/rate_limits).
- info:
name: Cancel Order (V2)
type: http
http:
method: DELETE
url: https://external-api.kalshi.com/trade-api/v2/portfolio/events/orders/:order_id
params:
- name: order_id
value: ''
type: path
description: Order ID
- name: subaccount
value: ''
type: query
description: Subaccount number (0 for primary, 1-32 for subaccounts). Defaults to 0.
- name: exchange_index
value: ''
type: query
auth:
type: apikey
key: KALSHI-ACCESS-KEY
value: '{{KALSHI-ACCESS-KEY}}'
placement: header
docs: Endpoint for cancelling event-market orders using the V2 response shape. Returns `{order_id, client_order_id, reduced_by}`
rather than a full order object.
- info:
name: Amend Order (V2)
type: http
http:
method: POST
url: https://external-api.kalshi.com/trade-api/v2/portfolio/events/orders/:order_id/amend
params:
- name: order_id
value: ''
type: path
description: Order ID
- name: subaccount
value: ''
type: query
description: Subaccount number (0 for primary, 1-32 for subaccounts). Defaults to 0.
body:
type: json
data: '{}'
auth:
type: apikey
key: KALSHI-ACCESS-
# --- truncated at 32 KB (80 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/kalshi/refs/heads/main/apis.yml