{"openapi":"3.1.0","info":{"title":"Amaneki","version":"0.1.0"},"servers":[{"url":"https://api.amaneki.com","description":"Production"}],"paths":{"/v1/billing/checkout":{"post":{"summary":"Checkout","description":"Create a Stripe Checkout Session for one of the configured\nprice tiers. Body::\n\n    {\n      \"tier\": \"pro\" | \"pro_plus\",        # default: \"pro\"\n      \"billing_cycle\": \"monthly\" | \"annual\",   # default: \"monthly\"\n      \"trial_days\": 0-30,                # default: 14 on first-time buyers\n      \"email\": \"optional\"\n    }\n\nPrice lookup resolves against the environment:\n  STRIPE_PRICE_ID / STRIPE_PRICE_ID_PRO_ANNUAL /\n  STRIPE_PRICE_ID_PRO_PLUS / STRIPE_PRICE_ID_PRO_PLUS_ANNUAL","operationId":"checkout_v1_billing_checkout_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutResponse"}}}}}}},"/v1/billing/webhook":{"post":{"summary":"Webhook","operationId":"webhook_v1_billing_webhook_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Webhook V1 Billing Webhook Post"}}}}}}},"/v1/billing/key":{"get":{"summary":"Get Key","operationId":"get_key_v1_billing_key_get","parameters":[{"name":"session_id","in":"query","required":true,"schema":{"type":"string","title":"Session Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BillingKeyResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/webhooks":{"get":{"summary":"List Subscriptions","operationId":"list_subscriptions_v1_webhooks_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookList"}}}}}},"post":{"summary":"Create Subscription","operationId":"create_subscription_v1_webhooks_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookCreateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/webhooks/{sub_id}":{"delete":{"summary":"Delete Subscription","operationId":"delete_subscription_v1_webhooks__sub_id__delete","parameters":[{"name":"sub_id","in":"path","required":true,"schema":{"type":"integer","title":"Sub Id"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OkResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/backtest":{"post":{"summary":"Run Backtest","operationId":"run_backtest_v1_backtest_post","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response Run Backtest V1 Backtest Post"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/correlation/market":{"get":{"summary":"Market","operationId":"market_v1_correlation_market_get","parameters":[{"name":"timeframe","in":"query","required":false,"schema":{"type":"string","default":"1m","title":"Timeframe"}},{"name":"window","in":"query","required":false,"schema":{"type":"integer","default":60,"title":"Window"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Market V1 Correlation Market Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/correlation/{symbol}":{"get":{"summary":"Per Symbol","operationId":"per_symbol_v1_correlation__symbol__get","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string","title":"Symbol"}},{"name":"timeframe","in":"query","required":false,"schema":{"type":"string","default":"1m","title":"Timeframe"}},{"name":"window","in":"query","required":false,"schema":{"type":"integer","default":60,"title":"Window"}},{"name":"reference","in":"query","required":false,"schema":{"type":"string","default":"btcusdt","title":"Reference"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Per Symbol V1 Correlation  Symbol  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/iv-gap/{symbol}":{"get":{"summary":"Iv Gap","operationId":"iv_gap_v1_iv_gap__symbol__get","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string","title":"Symbol"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Iv Gap V1 Iv Gap  Symbol  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/regime/{symbol}/matrix":{"get":{"summary":"Transition Matrix","operationId":"transition_matrix_v1_regime__symbol__matrix_get","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string","title":"Symbol"}},{"name":"timeframe","in":"query","required":false,"schema":{"type":"string","default":"1m","title":"Timeframe"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TransitionMatrix"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/regime/{symbol}/durations":{"get":{"summary":"Durations","operationId":"durations_v1_regime__symbol__durations_get","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string","title":"Symbol"}},{"name":"timeframe","in":"query","required":false,"schema":{"type":"string","default":"1m","title":"Timeframe"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegimeDurations"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/regime/{symbol}/state_at":{"get":{"summary":"State At","operationId":"state_at_v1_regime__symbol__state_at_get","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string","title":"Symbol"}},{"name":"ts_ms","in":"query","required":true,"schema":{"type":"integer","title":"Ts Ms"}},{"name":"timeframe","in":"query","required":false,"schema":{"type":"string","default":"1m","title":"Timeframe"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response State At V1 Regime  Symbol  State At Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/regime/{symbol}/explain":{"get":{"summary":"Explain","operationId":"explain_v1_regime__symbol__explain_get","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string","title":"Symbol"}},{"name":"timeframe","in":"query","required":false,"schema":{"type":"string","default":"1m","title":"Timeframe"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Explain V1 Regime  Symbol  Explain Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/regime/{symbol}/forecast":{"get":{"summary":"Return Distribution","description":"Empirical distribution of next ``horizon_bars`` log-returns,\nconditional on being in each regime, over the in-memory window.\n\nDespite the legacy ``/forecast`` alias, the response is a\nhistorical distribution, not a forward prediction. Keep the\nalias working so existing SDK calls don't break, but prefer\n``/return-distribution`` in new code.","operationId":"return_distribution_v1_regime__symbol__forecast_get","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string","title":"Symbol"}},{"name":"timeframe","in":"query","required":false,"schema":{"type":"string","default":"1m","title":"Timeframe"}},{"name":"horizon_bars","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Horizon Bars"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Return Distribution V1 Regime  Symbol  Forecast Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/regime/{symbol}/return-distribution":{"get":{"summary":"Return Distribution","description":"Empirical distribution of next ``horizon_bars`` log-returns,\nconditional on being in each regime, over the in-memory window.\n\nDespite the legacy ``/forecast`` alias, the response is a\nhistorical distribution, not a forward prediction. Keep the\nalias working so existing SDK calls don't break, but prefer\n``/return-distribution`` in new code.","operationId":"return_distribution_v1_regime__symbol__return_distribution_get","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string","title":"Symbol"}},{"name":"timeframe","in":"query","required":false,"schema":{"type":"string","default":"1m","title":"Timeframe"}},{"name":"horizon_bars","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Horizon Bars"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Return Distribution V1 Regime  Symbol  Return Distribution Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/sizing/{symbol}":{"get":{"summary":"Sizing","description":"Vol-target sizing calculation — raw input material, not a\nrecommendation.\n\nReturns ``size = target_vol / realized_vol``, optionally damped\nby regime: ×1.0 normal, ×0.5 high, ×1.3 low. The number is the\nclosed-form answer to the standard vol-targeting equation, not\na trading suggestion. Caller multiplies by their own gross,\napplies their own risk limits, and is responsible for any\ndownstream decision. Not investment advice.","operationId":"sizing_v1_sizing__symbol__get","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string","title":"Symbol"}},{"name":"target_vol","in":"query","required":false,"schema":{"type":"number","default":0.2,"title":"Target Vol"}},{"name":"timeframe","in":"query","required":false,"schema":{"type":"string","default":"1m","title":"Timeframe"}},{"name":"regime_damper","in":"query","required":false,"schema":{"type":"boolean","default":true,"title":"Regime Damper"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Sizing V1 Sizing  Symbol  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/feedback":{"post":{"summary":"Submit Feedback","operationId":"submit_feedback_v1_feedback_post","requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedbackCreateResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"get":{"summary":"List Feedback","operationId":"list_feedback_v1_feedback_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":50,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/FeedbackList"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/me/rotate-key":{"post":{"summary":"Rotate Key","operationId":"rotate_key_v1_me_rotate_key_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RotateKeyResponse"}}}}}}},"/v1/me/events":{"get":{"summary":"My Events","operationId":"my_events_v1_me_events_get","parameters":[{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response My Events V1 Me Events Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/me/usage":{"get":{"summary":"My Usage","operationId":"my_usage_v1_me_usage_get","parameters":[{"name":"hours","in":"query","required":false,"schema":{"type":"integer","default":24,"title":"Hours"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response My Usage V1 Me Usage Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/me/allowlist":{"get":{"summary":"Get Allowlist","operationId":"get_allowlist_v1_me_allowlist_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AllowlistResponse"}}}}}},"put":{"summary":"Set Allowlist","operationId":"set_allowlist_v1_me_allowlist_put","requestBody":{"content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Body"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AllowlistResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/presets/custom":{"get":{"summary":"List Custom Presets","operationId":"list_custom_presets_v1_presets_custom_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"additionalProperties":true,"type":"object","title":"Response List Custom Presets V1 Presets Custom Get"}}}}}}},"/v1/presets/custom/{name}":{"put":{"summary":"Upsert Custom Preset","operationId":"upsert_custom_preset_v1_presets_custom__name__put","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}}],"requestBody":{"required":true,"content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Body"}}}},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Upsert Custom Preset V1 Presets Custom  Name  Put"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}},"delete":{"summary":"Delete Custom Preset","operationId":"delete_custom_preset_v1_presets_custom__name__delete","parameters":[{"name":"name","in":"path","required":true,"schema":{"type":"string","title":"Name"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Delete Custom Preset V1 Presets Custom  Name  Delete"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/badge/{symbol}.svg":{"get":{"summary":"Badge","operationId":"badge_v1_badge__symbol__svg_get","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string","title":"Symbol"}},{"name":"timeframe","in":"query","required":false,"schema":{"type":"string","default":"1m","title":"Timeframe"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/funding/{symbol}":{"get":{"summary":"Funding","operationId":"funding_v1_funding__symbol__get","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string","title":"Symbol"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Funding V1 Funding  Symbol  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/regime/{symbol}/impact":{"get":{"summary":"Impact","operationId":"impact_v1_regime__symbol__impact_get","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string","title":"Symbol"}},{"name":"to","in":"query","required":false,"schema":{"type":"string","default":"high","title":"To"}},{"name":"timeframe","in":"query","required":false,"schema":{"type":"string","default":"1m","title":"Timeframe"}},{"name":"lookback_days","in":"query","required":false,"schema":{"type":"integer","default":30,"title":"Lookback Days"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ImpactResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/regime/lead-lag":{"get":{"summary":"Lead Lag","operationId":"lead_lag_v1_regime_lead_lag_get","parameters":[{"name":"leader","in":"query","required":true,"schema":{"type":"string","title":"Leader"}},{"name":"follower","in":"query","required":true,"schema":{"type":"string","title":"Follower"}},{"name":"to","in":"query","required":false,"schema":{"type":"string","default":"high","title":"To"}},{"name":"timeframe","in":"query","required":false,"schema":{"type":"string","default":"1m","title":"Timeframe"}},{"name":"lookback_days","in":"query","required":false,"schema":{"type":"integer","default":60,"title":"Lookback Days"}},{"name":"max_lag_minutes","in":"query","required":false,"schema":{"type":"integer","default":60,"title":"Max Lag Minutes"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/LeadLagResponse"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/metrics":{"get":{"summary":"Metrics","operationId":"metrics_v1_metrics_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}}}}},"/v1/health":{"get":{"summary":"Health","operationId":"health_v1_health_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse"}}}}}}},"/v1/health/deep":{"get":{"summary":"Health Deep","description":"Downstream check: Postgres reachability + freshness of the\nBinance poll loop. Without the METRICS_TOKEN bearer, returns\nonly the summary status — operators who need the per-symbol\nstale list attach the same token already used by /v1/metrics\nto keep internal data off the public surface.","operationId":"health_deep_v1_health_deep_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthDeepResponse"}}}}}}},"/v1/symbols":{"get":{"summary":"Symbols","operationId":"symbols_v1_symbols_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SymbolsResponse"}}}}}}},"/v1/timeframes":{"get":{"summary":"Timeframes","operationId":"timeframes_v1_timeframes_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TimeframesResponse"}}}}}}},"/v1/beacons":{"post":{"summary":"Beacon","description":"Tiny page-view recorder for the landing site. Anonymous,\nIP-rate-limited via the same bucket as the regime endpoints.\nWe never store raw IP — only a daily-rotating sha256 truncate\nso we can de-dupe sessions without retaining a real identifier.","operationId":"beacon_v1_beacons_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OkResponse"}}}}}}},"/v1/signups":{"post":{"summary":"Signup","operationId":"signup_v1_signups_post","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/OkResponse"}}}}}}},"/v1/presets":{"get":{"summary":"Presets","operationId":"presets_v1_presets_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/PresetsResponse"}}}}}}},"/v1/regime":{"get":{"summary":"Get Regime Grid","description":"Current regime for every tracked (symbol, timeframe) in one\nresponse. Meant for dashboards — a single call replaces N*M\nper-series round-trips and keeps free-tier viewers within the\nper-minute budget.","operationId":"get_regime_grid_v1_regime_get","responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegimeGrid"}}}}}}},"/v1/regime/{symbol}":{"get":{"summary":"Get Regime","operationId":"get_regime_v1_regime__symbol__get","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string","title":"Symbol"}},{"name":"timeframe","in":"query","required":false,"schema":{"type":"string","default":"1m","title":"Timeframe"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegimeSnapshot"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/consensus/{symbol}/multi-tf":{"get":{"summary":"Get Consensus Multi Tf","operationId":"get_consensus_multi_tf_v1_consensus__symbol__multi_tf_get","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string","title":"Symbol"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Consensus Multi Tf V1 Consensus  Symbol  Multi Tf Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/consensus/{symbol}":{"get":{"summary":"Get Consensus","operationId":"get_consensus_v1_consensus__symbol__get","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string","title":"Symbol"}},{"name":"timeframe","in":"query","required":false,"schema":{"type":"string","default":"1m","title":"Timeframe"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Consensus V1 Consensus  Symbol  Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/regime/{symbol}/custom":{"get":{"summary":"Get Regime Custom","description":"Re-evaluate the FSM against the in-memory feature window with\ncaller-supplied thresholds. Stateless — does not affect the\npreset detector or the broadcast stream.\n\n``vol_window`` / ``baseline_window`` override the default\n30 / 240 bar windows by recomputing features from the cached\nclose series. The cached features themselves stay untouched.","operationId":"get_regime_custom_v1_regime__symbol__custom_get","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string","title":"Symbol"}},{"name":"timeframe","in":"query","required":false,"schema":{"type":"string","default":"1m","title":"Timeframe"}},{"name":"high_enter","in":"query","required":false,"schema":{"type":"number","default":3.0,"title":"High Enter"}},{"name":"high_exit","in":"query","required":false,"schema":{"type":"number","default":0.5,"title":"High Exit"}},{"name":"low_enter","in":"query","required":false,"schema":{"type":"number","default":-2.5,"title":"Low Enter"}},{"name":"low_exit","in":"query","required":false,"schema":{"type":"number","default":-0.5,"title":"Low Exit"}},{"name":"enter_k","in":"query","required":false,"schema":{"type":"integer","default":2,"title":"Enter K"}},{"name":"exit_k","in":"query","required":false,"schema":{"type":"integer","default":8,"title":"Exit K"}},{"name":"vol_window","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Vol Window"}},{"name":"baseline_window","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Baseline Window"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"type":"object","additionalProperties":true,"title":"Response Get Regime Custom V1 Regime  Symbol  Custom Get"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/regime/{symbol}/history":{"get":{"summary":"Get History","description":"Historical transitions.\n\nIf Postgres is wired and either ``from_ms`` or ``to_ms`` is\ngiven, queries the DB for the full persisted history. Otherwise\nreturns the in-memory ring buffer (up to ~1024 transitions since\nprocess start).","operationId":"get_history_v1_regime__symbol__history_get","parameters":[{"name":"symbol","in":"path","required":true,"schema":{"type":"string","title":"Symbol"}},{"name":"timeframe","in":"query","required":false,"schema":{"type":"string","default":"1m","title":"Timeframe"}},{"name":"limit","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Limit"}},{"name":"from_ms","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"From Ms"}},{"name":"to_ms","in":"query","required":false,"schema":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"To Ms"}}],"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegimeHistory"}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"components":{"schemas":{"AllowlistResponse":{"properties":{"symbols":{"items":{"type":"string"},"type":"array","title":"Symbols"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"type":"object","required":["symbols"],"title":"AllowlistResponse"},"BillingKeyResponse":{"properties":{"api_key":{"type":"string","title":"Api Key"},"note":{"type":"string","title":"Note"}},"type":"object","required":["api_key","note"],"title":"BillingKeyResponse"},"CheckoutResponse":{"properties":{"url":{"type":"string","title":"Url"},"session_id":{"type":"string","title":"Session Id"},"tier":{"type":"string","enum":["pro","pro_plus"],"title":"Tier"},"billing_cycle":{"type":"string","enum":["monthly","annual"],"title":"Billing Cycle"},"trial_days":{"type":"integer","title":"Trial Days"}},"type":"object","required":["url","session_id","tier","billing_cycle","trial_days"],"title":"CheckoutResponse"},"DurationSummary":{"properties":{"samples":{"type":"integer","title":"Samples"},"mean":{"type":"number","title":"Mean"},"median":{"type":"number","title":"Median"},"p90":{"type":"number","title":"P90"},"max":{"type":"number","title":"Max"}},"type":"object","required":["samples","mean","median","p90","max"],"title":"DurationSummary"},"FeedbackCreateResponse":{"properties":{"id":{"type":"integer","title":"Id"},"ts":{"type":"string","title":"Ts"},"verdict":{"type":"string","title":"Verdict"}},"type":"object","required":["id","ts","verdict"],"title":"FeedbackCreateResponse"},"FeedbackItem":{"properties":{"id":{"type":"integer","title":"Id"},"ts":{"type":"string","title":"Ts"},"event_id":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Event Id"},"symbol":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Symbol"},"timeframe":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Timeframe"},"verdict":{"type":"string","title":"Verdict"},"note":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Note"}},"type":"object","required":["id","ts","event_id","symbol","timeframe","verdict","note"],"title":"FeedbackItem"},"FeedbackList":{"properties":{"count":{"type":"integer","title":"Count"},"items":{"items":{"$ref":"#/components/schemas/FeedbackItem"},"type":"array","title":"Items"}},"type":"object","required":["count","items"],"title":"FeedbackList"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HealthDeepResponse":{"properties":{"status":{"type":"string","enum":["ok","degraded"],"title":"Status"},"db_ok":{"type":"boolean","title":"Db Ok"},"poll_fresh":{"type":"boolean","title":"Poll Fresh"},"now_ms":{"type":"integer","title":"Now Ms"},"db_error":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Db Error"},"poll":{"anyOf":[{"additionalProperties":true,"type":"object"},{"type":"null"}],"title":"Poll"}},"type":"object","required":["status","db_ok","poll_fresh","now_ms"],"title":"HealthDeepResponse"},"HealthResponse":{"properties":{"status":{"type":"string","enum":["ok","degraded"],"title":"Status"},"started_at_ms":{"type":"integer","title":"Started At Ms"},"now_ms":{"type":"integer","title":"Now Ms"},"symbols":{"items":{"type":"string"},"type":"array","title":"Symbols"},"timeframes":{"items":{"type":"string"},"type":"array","title":"Timeframes"},"preset":{"type":"string","title":"Preset"},"preset_version":{"type":"string","title":"Preset Version"},"persistence":{"type":"boolean","title":"Persistence"}},"type":"object","required":["status","started_at_ms","now_ms","symbols","timeframes","preset","preset_version","persistence"],"title":"HealthResponse"},"HistoryTransition":{"properties":{"ts_ms":{"type":"integer","title":"Ts Ms"},"from":{"type":"string","enum":["low","normal","high"],"title":"From"},"to":{"type":"string","enum":["low","normal","high"],"title":"To"},"z_vol":{"type":"number","title":"Z Vol"},"close":{"type":"number","title":"Close"}},"type":"object","required":["ts_ms","from","to","z_vol","close"],"title":"HistoryTransition"},"ImpactHorizon":{"properties":{"samples":{"type":"integer","title":"Samples"},"median":{"type":"number","title":"Median"},"mean":{"type":"number","title":"Mean"},"std":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Std"},"p25":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"P25"},"p75":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"P75"},"p05":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"P05"},"p95":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"P95"}},"type":"object","required":["samples","median","mean"],"title":"ImpactHorizon"},"ImpactResponse":{"properties":{"symbol":{"type":"string","title":"Symbol"},"timeframe":{"type":"string","title":"Timeframe"},"to_regime":{"type":"string","enum":["low","normal","high"],"title":"To Regime"},"lookback_days":{"type":"integer","title":"Lookback Days"},"sample_size":{"type":"integer","title":"Sample Size"},"horizons":{"additionalProperties":{"$ref":"#/components/schemas/ImpactHorizon"},"type":"object","title":"Horizons"},"note":{"type":"string","title":"Note"}},"type":"object","required":["symbol","timeframe","to_regime","lookback_days","sample_size","horizons","note"],"title":"ImpactResponse"},"LagStats":{"properties":{"samples":{"type":"integer","title":"Samples"},"median_min":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Median Min"},"mean_min":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Mean Min"},"p25_min":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"P25 Min"},"p75_min":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"P75 Min"}},"type":"object","required":["samples"],"title":"LagStats"},"LastTransition":{"properties":{"from":{"type":"string","enum":["low","normal","high"],"title":"From"},"to":{"type":"string","enum":["low","normal","high"],"title":"To"},"ts_ms":{"type":"integer","title":"Ts Ms"},"z_vol":{"type":"number","title":"Z Vol"}},"type":"object","required":["from","to","ts_ms","z_vol"],"title":"LastTransition"},"LeadLagResponse":{"properties":{"leader":{"type":"string","title":"Leader"},"follower":{"type":"string","title":"Follower"},"timeframe":{"type":"string","title":"Timeframe"},"to_regime":{"type":"string","enum":["low","normal","high"],"title":"To Regime"},"lookback_days":{"type":"integer","title":"Lookback Days"},"max_lag_minutes":{"type":"integer","title":"Max Lag Minutes"},"leader_events":{"type":"integer","title":"Leader Events"},"follower_events":{"type":"integer","title":"Follower Events"},"matched":{"type":"integer","title":"Matched"},"hit_rate":{"type":"number","title":"Hit Rate"},"lag":{"anyOf":[{"$ref":"#/components/schemas/LagStats"},{"type":"null"}]},"note":{"type":"string","title":"Note"}},"type":"object","required":["leader","follower","timeframe","to_regime","lookback_days","max_lag_minutes","leader_events","follower_events","matched","hit_rate","note"],"title":"LeadLagResponse"},"OkResponse":{"properties":{"ok":{"type":"boolean","title":"Ok","default":true}},"type":"object","title":"OkResponse"},"PresetsResponse":{"properties":{"current":{"type":"string","title":"Current"},"available":{"items":{"type":"string"},"type":"array","title":"Available"},"version":{"type":"string","title":"Version"}},"type":"object","required":["current","available","version"],"title":"PresetsResponse"},"RegimeDurations":{"properties":{"symbol":{"type":"string","title":"Symbol"},"timeframe":{"type":"string","title":"Timeframe"},"bars":{"type":"integer","title":"Bars"},"unit":{"type":"string","const":"bars","title":"Unit","default":"bars"},"durations":{"additionalProperties":{"$ref":"#/components/schemas/DurationSummary"},"propertyNames":{"enum":["low","normal","high"]},"type":"object","title":"Durations"}},"type":"object","required":["symbol","timeframe","bars","durations"],"title":"RegimeDurations"},"RegimeGrid":{"properties":{"count":{"type":"integer","title":"Count"},"series":{"items":{"$ref":"#/components/schemas/RegimeGridRow"},"type":"array","title":"Series"}},"type":"object","required":["count","series"],"title":"RegimeGrid"},"RegimeGridRow":{"properties":{"symbol":{"type":"string","title":"Symbol"},"timeframe":{"type":"string","title":"Timeframe"},"regime":{"type":"string","enum":["low","normal","high"],"title":"Regime"},"z_vol":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Z Vol"},"close":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Close"},"last_update_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Update Ms"},"warmup":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Warmup"}},"type":"object","required":["symbol","timeframe","regime"],"title":"RegimeGridRow"},"RegimeHistory":{"properties":{"symbol":{"type":"string","title":"Symbol"},"timeframe":{"type":"string","title":"Timeframe"},"source":{"type":"string","enum":["memory","db"],"title":"Source"},"count":{"type":"integer","title":"Count"},"transitions":{"items":{"$ref":"#/components/schemas/HistoryTransition"},"type":"array","title":"Transitions"}},"type":"object","required":["symbol","timeframe","source","count","transitions"],"title":"RegimeHistory"},"RegimeSnapshot":{"properties":{"symbol":{"type":"string","title":"Symbol"},"timeframe":{"type":"string","title":"Timeframe"},"regime":{"type":"string","enum":["low","normal","high"],"title":"Regime"},"z_vol":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Z Vol"},"realized_vol":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Realized Vol"},"baseline_vol":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Baseline Vol"},"parkinson_vol":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Parkinson Vol"},"yang_zhang_vol":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Yang Zhang Vol"},"close":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Close"},"last_update_ms":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Last Update Ms"},"seconds_in_state":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Seconds In State"},"warmup":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Warmup"},"message":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Message"},"last_transition":{"anyOf":[{"$ref":"#/components/schemas/LastTransition"},{"type":"null"}]}},"type":"object","required":["symbol","timeframe","regime"],"title":"RegimeSnapshot"},"RotateKeyResponse":{"properties":{"api_key":{"type":"string","title":"Api Key"},"note":{"type":"string","title":"Note"}},"type":"object","required":["api_key","note"],"title":"RotateKeyResponse"},"SymbolsResponse":{"properties":{"symbols":{"items":{"type":"string"},"type":"array","title":"Symbols"}},"type":"object","required":["symbols"],"title":"SymbolsResponse"},"TimeframesResponse":{"properties":{"timeframes":{"items":{"type":"string"},"type":"array","title":"Timeframes"}},"type":"object","required":["timeframes"],"title":"TimeframesResponse"},"TransitionMatrix":{"properties":{"symbol":{"type":"string","title":"Symbol"},"timeframe":{"type":"string","title":"Timeframe"},"bars":{"type":"integer","title":"Bars"},"state_counts":{"additionalProperties":{"type":"integer"},"propertyNames":{"enum":["low","normal","high"]},"type":"object","title":"State Counts"},"matrix":{"additionalProperties":{"additionalProperties":{"type":"number"},"propertyNames":{"enum":["low","normal","high"]},"type":"object"},"propertyNames":{"enum":["low","normal","high"]},"type":"object","title":"Matrix"}},"type":"object","required":["symbol","timeframe","bars","state_counts","matrix"],"title":"TransitionMatrix"},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"},"input":{"title":"Input"},"ctx":{"type":"object","title":"Context"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"WebhookCreateResponse":{"properties":{"id":{"type":"integer","title":"Id"},"url":{"type":"string","title":"Url"},"symbols":{"items":{"type":"string"},"type":"array","title":"Symbols"},"timeframes":{"items":{"type":"string"},"type":"array","title":"Timeframes"},"to_regimes":{"items":{"type":"string"},"type":"array","title":"To Regimes"},"batch_window_seconds":{"type":"integer","title":"Batch Window Seconds"},"format":{"type":"string","enum":["json","discord"],"title":"Format"},"created_at":{"type":"string","title":"Created At"},"last_success_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Success At"},"last_failure_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Failure At"},"failure_count":{"type":"integer","title":"Failure Count","default":0},"disabled_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Disabled At"},"signing_secret":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Signing Secret"},"note":{"type":"string","title":"Note"}},"type":"object","required":["id","url","symbols","timeframes","to_regimes","batch_window_seconds","format","created_at","note"],"title":"WebhookCreateResponse"},"WebhookList":{"properties":{"subscriptions":{"items":{"$ref":"#/components/schemas/WebhookSubscription"},"type":"array","title":"Subscriptions"}},"type":"object","required":["subscriptions"],"title":"WebhookList"},"WebhookSubscription":{"properties":{"id":{"type":"integer","title":"Id"},"url":{"type":"string","title":"Url"},"symbols":{"items":{"type":"string"},"type":"array","title":"Symbols"},"timeframes":{"items":{"type":"string"},"type":"array","title":"Timeframes"},"to_regimes":{"items":{"type":"string"},"type":"array","title":"To Regimes"},"batch_window_seconds":{"type":"integer","title":"Batch Window Seconds"},"format":{"type":"string","enum":["json","discord"],"title":"Format"},"created_at":{"type":"string","title":"Created At"},"last_success_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Success At"},"last_failure_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Last Failure At"},"failure_count":{"type":"integer","title":"Failure Count","default":0},"disabled_at":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Disabled At"}},"type":"object","required":["id","url","symbols","timeframes","to_regimes","batch_window_seconds","format","created_at"],"title":"WebhookSubscription"}},"securitySchemes":{"BearerAuth":{"type":"http","scheme":"bearer","bearerFormat":"API key"},"ApiKeyHeader":{"type":"apiKey","in":"header","name":"X-API-Key"}}},"security":[{"BearerAuth":[]},{"ApiKeyHeader":[]},{}]}