{"key":"kalshi","title":"Kalshi","region":"us","status":"active","regions":["us"],"endpoints":["prediction","event_markets"],"example_paths":{"prediction":"/v1/prediction-markets/baseball_mlb?sources=kalshi","event_markets":"/v1/event-markets/search?q=<your+query>&sources=kalshi"},"freshness_path":"/v1/bookmakers/kalshi/freshness","historical_variants":{"measured":true,"measured_at":"2026-08-25T17:57:25Z","archive_sources":[{"source":"kalshi","archive":"props","rows_upper_bound":4511,"coverage_basis":"archive_write_time","first_row_at":"2026-05-13T04:35:46Z","last_row_at":"2026-08-25T11:39:06Z","days_since_last_row":0.4,"writing":true}],"examples":["kalshi"],"note":"Historical rows are not always filed under the live bookmaker key. Game-line archives use `<key>_open` (opening line) and `<key>_an` (archive-normalized close); some books archive under a feed-specific key such as `prizepicks_mobile`. Every key in `archive_sources` was measured in this deployment's archive and resolves back to this book; no other source string for it exists. `rows_upper_bound` is an upper bound on servable rows, not a promise: it counts every row filed under that key before the per-row simulated-fixture filter the read path also applies.","props_archive_status":"writing"}}