Type: Internal reference (derived from Kalshi OpenAPI)
Status: Living Document
Created: 2026-01-13
Updated: 2026-01-16 - Added blocking reasons and future tracking
Source: OpenAPI audit at https://docs.kalshi.com/openapi.yaml
Purpose
This document is the master reference for Kalshi API endpoint coverage. It tracks:
- What endpoints exist in the OpenAPI spec
- What we've implemented
- What we need to implement (and which spec covers it)
- Our deliberate non-implementations (with reasoning)
Coverage Summary
Category
OpenAPI Ops
Implemented
Coverage
Spec
Exchange
4
4
100%
β SPEC-040 Phase 4
Markets (Core)
5
5
100%
Done
Markets (Filters)
11 params
11 params
100%
β SPEC-040 Phase 1
Series
4
4
100%
SPEC-037 Phase 1 β
Search/Discovery
2
2
100%
β SPEC-040 Phase 3
Events
6
5
83%
βΈοΈ Forecast percentile history unimplemented
Structured Targets
2
2
100%
β SPEC-040 Phase 3
Portfolio (Read)
6
6
100%
β SPEC-040 Phase 2
Portfolio (Orders)
9
9
100%
β SPEC-040 Phase 2
Order Groups
5
5
100%
β SPEC-040 Phase 4
Subaccounts
4
0
0%
π« API blocked (403/404)
RFQ/Communications
11
0
0%
Not planned
Milestones & Live Data
4
4
100%
β SPEC-040 Phase 4
Multivariate Collections
5
3
60%
β SPEC-041 Phase 5 (partial)
Incentive Programs
1
1
100%
β SPEC-040 Phase 4
API Keys
4
0
0%
Not planned
FCM
2
0
0%
Not planned
TOTAL
74
50
68%
-
Complete Endpoint Matrix
Legend
Symbol
Meaning
β
Implemented with golden fixture + tests
π²
Planned - has spec coverage
β¬
Not planned - low priority
1. Exchange & System (4 endpoints)
Endpoint
Status
Spec
Notes
GET /exchange/status
β
Done
get_exchange_status()
GET /exchange/announcements
β
SPEC-040 Phase 4
get_exchange_announcements()
GET /exchange/schedule
β
SPEC-040 Phase 4
get_exchange_schedule()
GET /exchange/user_data_timestamp
β
SPEC-040 Phase 4
get_user_data_timestamp()
2. Markets (5 core endpoints + 6 filter params)
Endpoint
Status
Spec
Notes
GET /markets
β
Done
get_markets(), get_all_markets()
GET /markets/{ticker}
β
Done
get_market()
GET /markets/{ticker}/orderbook
β
Done
get_orderbook()
GET /markets/trades
β
Done
get_trades()
GET /markets/candlesticks
β
Done
get_candlesticks()
Filter Parameters (on GET /markets): β COMPLETE
Parameter
Status
Spec
Notes
status
β
Done
Filter by market status
event_ticker
β
Done
Filter by event
series_ticker
β
Done
Filter by series
tickers
β
SPEC-040 Phase 1
Batch lookup (comma-separated)
min_*_ts / max_*_ts
β
SPEC-040 Phase 1
Timestamp filters (6 params)
mve_filter
β
Done
Multivariate filtering
3. Series (4 endpoints) - β COMPLETE
Endpoint
Status
Spec
Notes
GET /series
β
SPEC-037 Phase 1
get_series_list()
GET /series/{series_ticker}
β
SPEC-037 Phase 1
get_series()
GET /series/fee_changes
β
SPEC-037 Phase 1
get_series_fee_changes()
GET /series/{series_ticker}/markets/{ticker}/candlesticks
β
Done
get_series_candlesticks()
4. Search & Discovery (2 endpoints)
Endpoint
Status
Spec
Notes
GET /search/tags_by_categories
β
SPEC-037 Phase 1
get_tags_by_categories()
GET /search/filters_by_sport
β
SPEC-040 Phase 3
get_filters_by_sport()
5. Events (6 endpoints)
Endpoint
Status
Spec
Notes
GET /events
β
Done
get_events(), get_all_events()
GET /events/{event_ticker}
β
Done
get_event()
GET /events/multivariate
β
Done
get_multivariate_events*() (MVEs excluded from /events)
GET /events/{event_ticker}/metadata
β
SPEC-040 Phase 3
get_event_metadata()
GET /series/{series_ticker}/events/{ticker}/candlesticks
β
SPEC-040 Phase 3
get_event_candlesticks()
GET /series/{series_ticker}/events/{ticker}/forecast_percentile_history
β¬
-
π Added Sep 11, 2025 (changelog calls it /forecast_percentiles_history). Auth required + required query params; no validated 200 fixture recorded yet
OpenAPI exists, but endpoint returned 404 page not found in demo + prod (2026-01-15)
GET /portfolio/subaccounts/balances
β¬
-
Demo: 200 empty; Prod: 403 invalid_parameters ("not available in production")
POST /portfolio/subaccounts/transfer
β¬
-
OpenAPI exists, but endpoint returned 404 page not found in demo + prod (2026-01-15)
GET /portfolio/subaccounts/transfers
β¬
-
Demo: 200 empty; Prod: 403 invalid_parameters ("not available in production")
Blocking reason: Feature added Jan 9, 2026 (per changelog) - only 7 days before testing. Likely in phased rollout /
account-permission gated (exact rollout criteria unknown).
Action: Re-check in Q2 2026 or contact Kalshi support to request access.
Note: External fiat/crypto deposits are NOT available via API (use Kalshi web UI).
11. Milestones & Live Data (4 endpoints)
Endpoint
Status
Spec
Notes
GET /milestones
β
SPEC-040 Phase 4
get_milestones()
GET /milestones/{milestone_id}
β
SPEC-040 Phase 4
get_milestone()
GET /live_data/{type}/milestone/{milestone_id}
β
SPEC-040 Phase 4
get_milestone_live_data()
GET /live_data/batch
β
SPEC-040 Phase 4
get_live_data_batch()
12. Multivariate Collections (5 endpoints)
Endpoint
Status
Spec
Notes
GET /multivariate_event_collections
β
SPEC-041 Phase 5
get_multivariate_event_collections()
GET /multivariate_event_collections/{collection_ticker}
β
SPEC-041 Phase 5
get_multivariate_event_collection()
POST /multivariate_event_collections/{collection_ticker}
β¬
-
Auth required
GET /multivariate_event_collections/{collection_ticker}/lookup
β¬
-
Lookup history (low value)
PUT /multivariate_event_collections/{collection_ticker}/lookup
β
SPEC-041 Phase 5
lookup_multivariate_event_collection_tickers()
13. RFQ / Communications (11 endpoints) - β INSTITUTIONAL ONLY
Endpoint
Status
Notes
GET /communications/id
β¬
Large block trades only
GET /communications/rfqs
β¬
Institutional use
POST /communications/rfqs
β¬
Institutional use
GET /communications/rfqs/{rfq_id}
β¬
Institutional use
DELETE /communications/rfqs/{rfq_id}
β¬
Institutional use
GET /communications/quotes
β¬
Institutional use
POST /communications/quotes
β¬
Institutional use
GET /communications/quotes/{quote_id}
β¬
Institutional use
DELETE /communications/quotes/{quote_id}
β¬
Institutional use
PUT /communications/quotes/{quote_id}/accept
β¬
Institutional use
PUT /communications/quotes/{quote_id}/confirm
β¬
Institutional use
Why not planned: RFQ (Request for Quote) is for negotiating large block trades (1000+ contracts) outside the orderbook.
Used by market makers, hedge funds, and institutional traders. Not relevant for retail/research automation.
Would implement if: Trading very large positions where orderbook liquidity is insufficient.
14. API Keys (4 endpoints) - β SECURITY RISK
Endpoint
Status
Notes
GET /api_keys
β¬
Manage via web UI
POST /api_keys
β¬
Manage via web UI
POST /api_keys/generate
β¬
Manage via web UI
DELETE /api_keys/{api_key}
β¬
Manage via web UI
Why not planned: Programmatic API key management is a security risk. Better managed via Kalshi web UI where you have
2FA protection and audit trails.
Would implement if: Building a multi-user service that needs to manage keys programmatically (not our use case).
15. FCM (2 endpoints) - β INSTITUTIONAL ONLY (EXPLICITLY DOCUMENTED)
"This endpoint requires FCM member access level... only intended for use by FCM members (rare)"
FCM = Futures Commission Merchant. These are for broker integrations (Robinhood, Webull) and institutional clearing
members. Not applicable to retail traders.
Would implement if: Building a brokerage integration (not our use case).
16. Incentive Programs (1 endpoint)
Endpoint
Status
Spec
Notes
GET /incentive_programs
β
SPEC-040 Phase 4
get_incentive_programs()
Implementation Priority
P1: Critical Path (SPEC-040 Phase 1β2)
Market filters (tickers, min_*_ts / max_*_ts) to avoid the "fetch all" anti-pattern.
Order operations (batch create/cancel, get order detail, decrease, queue positions, resting order total value).