generated: '2026-07-15' method: generated source: openapi/kalshi-openapi.yml description: Recommended x-agentic-access execution contracts, classified heuristically from the OpenAPI. A governance starting point for exposing this API to AI agents — review and bind audience per deployment. See research/curity/agentic-governance/. summary: operations: 98 by_action_class: connected: 67 acting: 31 by_consequence: read: 67 physical: 17 safety-critical: 1 write: 13 human_in_the_loop_required: 1 operations: - path: /exchange/status method: get operationId: GetExchangeStatus x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /exchange/announcements method: get operationId: GetExchangeAnnouncements x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /series/fee_changes method: get operationId: GetSeriesFeeChanges x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /exchange/schedule method: get operationId: GetExchangeSchedule x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /exchange/user_data_timestamp method: get operationId: GetUserDataTimestamp x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /series/{series_ticker}/markets/{ticker}/candlesticks method: get operationId: GetMarketCandlesticks x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /markets/trades method: get operationId: GetTrades x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /markets/{ticker}/orderbook method: get operationId: GetMarketOrderbook x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /markets/orderbooks method: get operationId: GetMarketOrderbooks x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /series/{series_ticker} method: get operationId: GetSeries x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /series method: get operationId: GetSeriesList x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /markets method: get operationId: GetMarkets x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /markets/{ticker} method: get operationId: GetMarket x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /markets/candlesticks method: get operationId: BatchGetMarketCandlesticks x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /series/{series_ticker}/events/{ticker}/candlesticks method: get operationId: GetMarketCandlesticksByEvent x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /events method: get operationId: GetEvents x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /events/multivariate method: get operationId: GetMultivariateEvents x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /events/{event_ticker} method: get operationId: GetEvent x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /events/{event_ticker}/metadata method: get operationId: GetEventMetadata x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /series/{series_ticker}/events/{ticker}/forecast_percentile_history method: get operationId: GetEventForecastPercentilesHistory x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /portfolio/orders method: get operationId: GetOrders x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /portfolio/orders method: post operationId: CreateOrder x-agentic-access: action-class: acting consequence: physical subject: required audience: null token: max-ttl: 300 exchange: true purpose-required: true escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /portfolio/orders/{order_id} method: get operationId: GetOrder x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /portfolio/orders/{order_id} method: delete operationId: CancelOrder x-agentic-access: action-class: acting consequence: physical subject: required audience: null token: max-ttl: 300 exchange: true purpose-required: true escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /portfolio/orders/batched method: post operationId: BatchCreateOrders x-agentic-access: action-class: acting consequence: physical subject: required audience: null token: max-ttl: 300 exchange: true purpose-required: true escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /portfolio/orders/batched method: delete operationId: BatchCancelOrders x-agentic-access: action-class: acting consequence: physical subject: required audience: null token: max-ttl: 300 exchange: true purpose-required: true escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /portfolio/orders/{order_id}/amend method: post operationId: AmendOrder x-agentic-access: action-class: acting consequence: physical subject: required audience: null token: max-ttl: 300 exchange: true purpose-required: true escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /portfolio/orders/{order_id}/decrease method: post operationId: DecreaseOrder x-agentic-access: action-class: acting consequence: physical subject: required audience: null token: max-ttl: 300 exchange: true purpose-required: true escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /portfolio/orders/queue_positions method: get operationId: GetOrderQueuePositions x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /portfolio/orders/{order_id}/queue_position method: get operationId: GetOrderQueuePosition x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /portfolio/events/orders method: post operationId: CreateOrderV2 x-agentic-access: action-class: acting consequence: physical subject: required audience: null token: max-ttl: 300 exchange: true purpose-required: true escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /portfolio/events/orders/batched method: post operationId: BatchCreateOrdersV2 x-agentic-access: action-class: acting consequence: physical subject: required audience: null token: max-ttl: 300 exchange: true purpose-required: true escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /portfolio/events/orders/batched method: delete operationId: BatchCancelOrdersV2 x-agentic-access: action-class: acting consequence: physical subject: required audience: null token: max-ttl: 300 exchange: true purpose-required: true escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /portfolio/events/orders/{order_id} method: delete operationId: CancelOrderV2 x-agentic-access: action-class: acting consequence: physical subject: required audience: null token: max-ttl: 300 exchange: true purpose-required: true escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /portfolio/events/orders/{order_id}/amend method: post operationId: AmendOrderV2 x-agentic-access: action-class: acting consequence: physical subject: required audience: null token: max-ttl: 300 exchange: true purpose-required: true escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /portfolio/events/orders/{order_id}/decrease method: post operationId: DecreaseOrderV2 x-agentic-access: action-class: acting consequence: physical subject: required audience: null token: max-ttl: 300 exchange: true purpose-required: true escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /portfolio/order_groups method: get operationId: GetOrderGroups x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /portfolio/order_groups/create method: post operationId: CreateOrderGroup x-agentic-access: action-class: acting consequence: physical subject: required audience: null token: max-ttl: 300 exchange: true purpose-required: true escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /portfolio/order_groups/{order_group_id} method: get operationId: GetOrderGroup x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /portfolio/order_groups/{order_group_id} method: delete operationId: DeleteOrderGroup x-agentic-access: action-class: acting consequence: physical subject: required audience: null token: max-ttl: 300 exchange: true purpose-required: true escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /portfolio/order_groups/{order_group_id}/reset method: put operationId: ResetOrderGroup x-agentic-access: action-class: acting consequence: safety-critical subject: required audience: null token: max-ttl: 120 exchange: true purpose-required: true proof-of-possession: true escalation: human-in-the-loop: required audit: required - path: /portfolio/order_groups/{order_group_id}/trigger method: put operationId: TriggerOrderGroup x-agentic-access: action-class: acting consequence: physical subject: required audience: null token: max-ttl: 300 exchange: true purpose-required: true escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /portfolio/order_groups/{order_group_id}/limit method: put operationId: UpdateOrderGroupLimit x-agentic-access: action-class: acting consequence: physical subject: required audience: null token: max-ttl: 300 exchange: true purpose-required: true escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /portfolio/balance method: get operationId: GetBalance x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /portfolio/subaccounts method: post operationId: CreateSubaccount x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /portfolio/subaccounts/transfer method: post operationId: ApplySubaccountTransfer x-agentic-access: action-class: acting consequence: physical subject: required audience: null token: max-ttl: 300 exchange: true purpose-required: true escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /portfolio/subaccounts/balances method: get operationId: GetSubaccountBalances x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /portfolio/subaccounts/transfers method: get operationId: GetSubaccountTransfers x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /portfolio/subaccounts/netting method: put operationId: UpdateSubaccountNetting x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /portfolio/subaccounts/netting method: get operationId: GetSubaccountNetting x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /portfolio/positions method: get operationId: GetPositions x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /portfolio/settlements method: get operationId: GetSettlements x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /portfolio/deposits method: get operationId: GetDeposits x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /portfolio/withdrawals method: get operationId: GetWithdrawals x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /portfolio/summary/total_resting_order_value method: get operationId: GetPortfolioRestingOrderTotalValue x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /portfolio/fills method: get operationId: GetFills x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /communications/id method: get operationId: GetCommunicationsID x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /communications/rfqs method: get operationId: GetRFQs x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /communications/rfqs method: post operationId: CreateRFQ x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /communications/rfqs/{rfq_id} method: get operationId: GetRFQ x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /communications/rfqs/{rfq_id} method: delete operationId: DeleteRFQ x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /communications/quotes method: get operationId: GetQuotes x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /communications/quotes method: post operationId: CreateQuote x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /communications/quotes/{quote_id} method: get operationId: GetQuote x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /communications/quotes/{quote_id} method: delete operationId: DeleteQuote x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /communications/quotes/{quote_id}/accept method: put operationId: AcceptQuote x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /communications/quotes/{quote_id}/confirm method: put operationId: ConfirmQuote x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /api_keys method: get operationId: GetApiKeys x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /api_keys method: post operationId: CreateApiKey x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /api_keys/generate method: post operationId: GenerateApiKey x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /api_keys/{api_key} method: delete operationId: DeleteApiKey x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /account/limits method: get operationId: GetAccountApiLimits x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /account/endpoint_costs method: get operationId: GetAccountEndpointCosts x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /search/tags_by_categories method: get operationId: GetTagsForSeriesCategories x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /search/filters_by_sport method: get operationId: GetFiltersForSports x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /live_data/milestone/{milestone_id} method: get operationId: GetLiveDataByMilestone x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /live_data/{type}/milestone/{milestone_id} method: get operationId: GetLiveData x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /live_data/batch method: get operationId: GetLiveDatas x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /live_data/milestone/{milestone_id}/game_stats method: get operationId: GetGameStats x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /structured_targets method: get operationId: GetStructuredTargets x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /structured_targets/{structured_target_id} method: get operationId: GetStructuredTarget x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /milestones/{milestone_id} method: get operationId: GetMilestone x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /milestones method: get operationId: GetMilestones x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /multivariate_event_collections/{collection_ticker} method: get operationId: GetMultivariateEventCollection x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /multivariate_event_collections/{collection_ticker} method: post operationId: CreateMarketInMultivariateEventCollection x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /multivariate_event_collections method: get operationId: GetMultivariateEventCollections x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /multivariate_event_collections/{collection_ticker}/lookup method: put operationId: LookupTickersForMarketInMultivariateEventCollection x-agentic-access: action-class: acting consequence: write subject: required audience: null token: max-ttl: 900 escalation: human-in-the-loop: conditional triggers: - abnormal - high-value audit: required - path: /multivariate_event_collections/{collection_ticker}/lookup method: get operationId: GetMultivariateEventCollectionLookupHistory x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /incentive_programs method: get operationId: GetIncentivePrograms x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /fcm/orders method: get operationId: GetFCMOrders x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /fcm/positions method: get operationId: GetFCMPositions x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /historical/cutoff method: get operationId: GetHistoricalCutoff x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /historical/markets/{ticker}/candlesticks method: get operationId: GetMarketCandlesticksHistorical x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /historical/fills method: get operationId: GetFillsHistorical x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /historical/orders method: get operationId: GetHistoricalOrders x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /historical/trades method: get operationId: GetTradesHistorical x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /historical/markets method: get operationId: GetHistoricalMarkets x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none - path: /historical/markets/{ticker} method: get operationId: GetHistoricalMarket x-agentic-access: action-class: connected consequence: read subject: optional token: max-ttl: 3600 audit: none