Kalshi Agentic Access
Kalshi exposes 98 API operations that an AI agent could call, of which 31 are state-changing ‘acting’ operations. This is a recommended x-agentic-access execution contract — the scope, audience, consequence tier, short-lived token constraints, and escalation each action should carry before it is handed to an autonomous agent.
By consequence: 67 read, 13 write, 17 physical, and 1 safety-critical.
1 operation are classed safety-critical and should require human-in-the-loop approval at runtime.
Contracts are classified heuristically from the provider’s OpenAPI and refresh on every APIs.io network build; audience is bound per deployment. The model follows Curity’s Access Intelligence (apidays Munich 2026). Browse every provider’s agent contracts at agentic-access.apis.io.
By consequence
Highest-consequence actions
The physical and safety-critical operations an agent could invoke — the ones that most warrant scoped tokens, tight TTLs, and escalation. Full per-operation contracts are in the source below.
| Method | Path | Consequence | Human-in-loop |
|---|---|---|---|
| PUT | /portfolio/order_groups/{order_group_id}/reset | safety-critical | required |
| POST | /portfolio/events/orders | physical | conditional |
| POST | /portfolio/events/orders/batched | physical | conditional |
| DELETE | /portfolio/events/orders/batched | physical | conditional |
| DELETE | /portfolio/events/orders/{order_id} | physical | conditional |
| POST | /portfolio/events/orders/{order_id}/amend | physical | conditional |
| POST | /portfolio/events/orders/{order_id}/decrease | physical | conditional |
| POST | /portfolio/order_groups/create | physical | conditional |
| DELETE | /portfolio/order_groups/{order_group_id} | physical | conditional |
| PUT | /portfolio/order_groups/{order_group_id}/limit | physical | conditional |
| PUT | /portfolio/order_groups/{order_group_id}/trigger | physical | conditional |
| POST | /portfolio/orders | physical | conditional |
| POST | /portfolio/orders/batched | physical | conditional |
| DELETE | /portfolio/orders/batched | physical | conditional |
| DELETE | /portfolio/orders/{order_id} | physical | conditional |
| POST | /portfolio/orders/{order_id}/amend | physical | conditional |
| POST | /portfolio/orders/{order_id}/decrease | physical | conditional |
| POST | /portfolio/subaccounts/transfer | physical | conditional |
Source
Agentic Access
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