Kalshi Weather Logger — build v2026-07-17-1400 All endpoints require the X-Auth-Token header except the two marked PUBLIC. Method shown is the intended usage; routes without an explicit check accept any method. PUBLIC (no auth) GET /status database stats (row counts, latest snapshot) GET /heartbeat build id + last cron run status SNAPSHOTS / MARKET DATA POST /run trigger a manual market snapshot now GET /series all tracked series with volume GET /series-dates dates logged per series GET /market-prices live Kalshi prices (?event=...) GET /schedule market open/close schedule per series GET /counts snapshot row counts per series/date GET /orderbook-csv download orderbook_log as CSV (?series=...) GET /export-csv download snapshots as CSV (?ticker=...&since=...) GET /price-drift intraday price drift by bracket rank and hour GET /data-integrity snapshot completeness checks (6 rows/mkt/hour) FORECASTS / PROVIDERS POST /nws-run trigger the full weather-forecast log now GET /forecast-comparison provider-vs-provider forecast table GET /forecast-edge-v2 forecast edge grid (series/provider/hour) GET /forecast-picks best (provider, hour) per series for current metric GET /set-forecast-metric persist forecast metric + rebuild picks (?metric=...) POST /consensus-backfill rebuild AVG/AVG_TRIM/MEDIAN history (body {from,to} optional) OBSERVATIONS / SETTLEMENT GET /observations recent obs rows per station GET /stations station board: current temp, trend, min/max GET /clisat today's official CLISAT observations GET /clisat-debug raw CLI product text + parse diagnostics GET /death-flags obs-triggered bracket-death log GET /death-flags-run run the death-flag scan now GET /margin-survival further-drop/rise exceedance grid + critical hours POST /margin-survival-run recompute margin_survival now (60d window) EDGE / ANALYSIS GET /edge edge table (legacy) GET /edge-canonical canonical edge tables (?table=hourly|strategy) GET /combined-rf Combined R/F tab data (all-40 computed view) GET /bracket-rank bracket-rank win-rate table GET /bracket-rank-combined opening edge distribution data GET /stop-loss-analysis hypothetical exit when bracket no longer top GET /gain-analysis per-bet hourly position value (gain/peak) GET /bet-chart per-bet price path for charting GET /run-pickers re-run all pickers now GET /run-edge-tables rebuild edge_hourly + edge_strategy now POST /revision-sim/run sell-revision backtest sweep (writes revision_sim) GET /revision-sim read revision-sim run list / one run's rows BETTING / CANDIDATES GET /paper-bets all paper bets with filters POST /paper-bets/heal-fills heal rows with order id but NULL fill data POST /fills/sync pull fills from Kalshi API into D1 GET /fills return fills with optional filters GET /rotate-bets rotate-bet analysis view GET /bet-candidates candidate list for the Candidates tab POST /bet-candidates/select select/deselect a candidate GET /bet-candidates/thresholds read candidate thresholds POST /bet-candidates/thresholds write candidate thresholds POST /bet-candidates/auto-run run candidate auto-selection now GET /variant-filter read variant filter (POST writes it) GET /variant-filter-counts candidate counts per bet_type/variant GET /set-strategy-metric persist edge metric + rebuild strategy picks GET /set-bet-enabled enable/disable one strategy pick GET /set-bet-enabled-bulk enable/disable strategy picks in bulk ENGINE / LIVE POST /bet-engine/start start the bet engine POST /bet-engine/stop stop the bet engine GET /bet-engine/status engine running state GET /bet-engine engine recommendations (?betType=...&minEdge=...) GET /engine-log engine evaluation log ("Not Placed" diagnostic) GET /live-config read live-betting config (POST writes it) GET /live-status live positions, balance, exposure GET /cron-health per-source cron write counts vs expected ADMIN / DEBUG POST /run-backup run the D1-to-R2 CSV backup now GET /list-tables every table in the database GET /export-table stream any table as CSV (?table=...) GET /debug-forecast raw Kalshi forecast-history probe GET /debug-candles raw Kalshi candlestick probe WS LOGGER (separate worker, route /ws/*) GET /ws/status PUBLIC — connection state, watchlist, counters POST /ws/start connect the Kalshi WebSocket POST /ws/stop disconnect GET /ws/watchlist current watchlist + extras (POST replaces extras) POST /ws/flush force-flush buffers to D1 POST /ws/prune delete rows older than 21 days