{"openapi":"3.1.0","info":{"title":"AIOKA Intelligence API","description":"\n## AI-powered crypto market intelligence\n\nAIOKA Intelligence API provides real-time access to our AI Council verdicts,\nmarket signals, regime detection, and Ghost Trader entry signals.\n\n### Tiers\n- **Free**: 100 calls/day — Verdict + Regime\n- **Basic** ($49/mo): 1,000 calls/day — + Signals\n- **Pro** ($199/mo): 10,000 calls/day — + Council + Ghost\n\n### Authentication\nPass your API key in the `X-API-Key` header:\n\n```\nX-API-Key: aik_free_xxxxxxxxxxxx\n```\n\n### Get your API key\n`POST /v1/keys/generate` (free tier, no credit card)\n","contact":{"name":"AIOKA Support","url":"https://docs.aioka.io/","email":"api@aioka.io"},"license":{"name":"Commercial","url":"https://aioka.io/terms"},"version":"1.0.0"},"servers":[{"url":"https://api.aioka.io","description":"Production — AIOKA Intelligence API"}],"paths":{"/v1/health":{"get":{"tags":["Health"],"summary":"Health Check","description":"Returns service status. No API key required.\n\n**Tier:** Public ✅\n**Cache:** None\n**Use:** Railway health checks, uptime monitors","operationId":"health_check_v1_health_get","responses":{"200":{"description":"Service is healthy","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse"}}}}},"security":[]},"head":{"tags":["Health"],"summary":"Health Check","description":"Returns service status. No API key required.\n\n**Tier:** Public ✅\n**Cache:** None\n**Use:** Railway health checks, uptime monitors","operationId":"health_check_v1_health_get","responses":{"200":{"description":"Service is healthy","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HealthResponse"}}}}},"security":[]}},"/v1/keys/generate":{"post":{"tags":["API Keys"],"summary":"Generate Free API Key","description":"Generate a free tier API key instantly. No credit card required.\n\n**Free tier includes:**\n- 100 API calls per day\n- 2 calls per minute\n- Access to: `GET /v1/verdict/latest`, `GET /v1/regime/current`, `GET /v1/health`\n\n**Upgrade to Basic or Pro:**\nContact us at api@aioka.io\n\n⚠️ Store your key safely — it **cannot be recovered** after this response!","operationId":"generate_free_key_v1_keys_generate_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeyGenerateRequest"}}},"required":true},"responses":{"200":{"description":"Key generated successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/KeyGenerateResponse"}}}},"400":{"description":"Validation error"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/waitlist":{"post":{"tags":["Waitlist"],"summary":"Join the AIOKA waitlist","description":"Submit an email address to join the AIOKA pre-launch waitlist.\n\n**Auth:** None required — public endpoint.\n\nReturns 400 for invalid email format, 409 if already registered.","operationId":"join_waitlist_v1_waitlist_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WaitlistJoinRequest"}}},"required":true},"responses":{"200":{"description":"Successfully joined waitlist","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WaitlistJoinResponse"}}}},"400":{"description":"Invalid email address"},"409":{"description":"Email already on waitlist"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]}},"/v1/contact":{"post":{"tags":["Contact"],"summary":"Submit contact form","description":"Submit a message via the AIOKA contact form.\n\n**Auth:** None required — public endpoint.\n\n**Rate limit:** 3 requests per IP per hour.\n\n**Subjects:** General inquiry, API & Technical support, Billing & Pricing,\nEnterprise / Custom plan, Partnership, Bug report.\n\nReturns 400 for validation errors, 429 if rate limit exceeded.","operationId":"submit_contact_v1_contact_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactRequest"}}},"required":true},"responses":{"200":{"description":"Message sent successfully","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ContactResponse"}}}},"400":{"description":"Validation error"},"429":{"description":"Rate limit exceeded — max 3 per hour"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]}},"/v1/newsletter/subscribe":{"post":{"tags":["Newsletter"],"summary":"Subscribe to the AIOKA newsletter","description":"Subscribe an email address to the AIOKA newsletter.\n\n**Auth:** None required — public endpoint.\n\n**Rate limit:** 3 requests per IP per hour.\n\n**Spam protection:** Honeypot `website` field must be empty.\n\n**Duplicate handling:** Already-subscribed emails return success silently\n(no error) to prevent email enumeration and harvesting.\n\nOn new subscription, a welcome email is sent via Resend and the owner\nreceives a Telegram notification.\n\nReturns 400 for invalid email, 429 if rate limit exceeded.","operationId":"subscribe_newsletter_v1_newsletter_subscribe_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewsletterSubscribeRequest"}}},"required":true},"responses":{"200":{"description":"Successfully subscribed to newsletter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewsletterSubscribeResponse"}}}},"400":{"description":"Invalid email address or honeypot triggered"},"429":{"description":"Rate limit exceeded — max 3 per hour"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]}},"/v1/newsletter/unsubscribe":{"post":{"tags":["Newsletter"],"summary":"Unsubscribe from the AIOKA newsletter","description":"Unsubscribe an email address from the AIOKA newsletter.\n\n**Auth:** None required — public endpoint (called via unsubscribe link in emails).\n\n**Rate limit:** 3 requests per IP per hour.\n\n**Spam protection:** Honeypot `website` field must be empty.\n\n**Email enumeration prevention:** Not-found emails return 200 silently.\n\nSets `is_active = FALSE` in `newsletter_subscribers`. Admin receives a\nTelegram notification with the unsubscribed email domain.\n\nReturns 400 for invalid email, 429 if rate limit exceeded.","operationId":"unsubscribe_newsletter_v1_newsletter_unsubscribe_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewsletterUnsubscribeRequest"}}},"required":true},"responses":{"200":{"description":"Successfully unsubscribed from newsletter","content":{"application/json":{"schema":{"$ref":"#/components/schemas/NewsletterUnsubscribeResponse"}}}},"400":{"description":"Invalid email address or honeypot triggered"},"429":{"description":"Rate limit exceeded — max 3 per hour"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[]}},"/v1/verdict/latest":{"get":{"tags":["Verdict"],"summary":"Latest AI Council Verdict","description":"Returns the most recent AI Council verdict.\n\n6 specialized AI agents analyze 27 live market signals and reach a consensus ruling.\n\nThe `council_explanation` field carries a plain-English, jargon-free 2-3 sentence\nsummary of WHY the council reached its ruling (synthesized by the Chief Judge).\nIt is `null` when no recent council verdict exists.\n\nEach item in the `agents` array also carries a `reasoning` field — that agent's\nown 2-3 sentence rationale for its individual vote. It is `null` on historical\nverdicts persisted before per-agent reasoning was exposed.\n\n**Tier:** Free ✅\n**Cache TTL:** 60 seconds\n**Rate limit:** 100 calls/day, 2/minute\n\n### Ruling values\n| Ruling | Meaning |\n|--------|---------|\n| `STRONG_BUY` | High-conviction bullish |\n| `BUY` | Moderate bullish |\n| `ACCUMULATE` | Cautiously bullish |\n| `HOLD` | Neutral — wait |\n| `REDUCE` | Cautiously bearish |\n| `SELL` | Moderate bearish |\n| `STRONG_SELL` | High-conviction bearish |","operationId":"get_latest_verdict_v1_verdict_latest_get","responses":{"200":{"description":"Latest verdict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerdictLatestResponse"}}}},"401":{"description":"Invalid or missing API key"},"429":{"description":"Rate limit exceeded"}},"security":[{"APIKeyHeader":[]}]}},"/v1/verdict/history":{"get":{"tags":["Verdict"],"summary":"Verdict History (last 24h)","description":"Returns paginated verdict history for the last 24 hours.\n\n**Tier:** Basic ($49/mo) 🔒\n**Cache TTL:** 120 seconds\n**Rate limit:** 1,000 calls/day, 30/minute","operationId":"get_verdict_history_v1_verdict_history_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Page"}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","default":24,"title":"Per Page"}}],"responses":{"200":{"description":"Verdict history","content":{"application/json":{"schema":{"$ref":"#/components/schemas/VerdictHistoryResponse"}}}},"401":{"description":"Invalid or missing API key"},"403":{"description":"Basic tier required"},"429":{"description":"Rate limit exceeded"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/agents/performance":{"get":{"tags":["Agents"],"summary":"AI Council Agent Accuracy","description":"Per-agent historical accuracy for the BTC AI Council.\n\nFor every closed BTC Ghost Trader trade, AIOKA finds the council verdict that\ntriggered it and checks which agents voted in the direction that actually paid\noff. The result is each agent's hit rate across all graded trades.\n\nOnly directional votes (BULLISH / BEARISH) are graded. NEUTRAL votes and\nnon-directional rulings (RISK SHIELD) are excluded from the denominator, so an\nagent with no directional history simply has `total_calls: 0` and is omitted.\n\n**Asset:** BTC only (the only asset with a live closed-trade record).\n**Tier:** Free ✅\n**Cache TTL:** 3600 seconds (1 hour)\n**Rate limit:** 100 calls/day, 2/minute (Free tier)","operationId":"get_agent_performance_v1_agents_performance_get","responses":{"200":{"description":"Per-agent accuracy stats","content":{"application/json":{"schema":{"$ref":"#/components/schemas/AgentPerformanceResponse"}}}},"401":{"description":"Invalid or missing API key"},"429":{"description":"Rate limit exceeded"}},"security":[{"APIKeyHeader":[]}]}},"/v1/regime/current":{"get":{"tags":["Regime"],"summary":"Current Market Regime","description":"Returns the current HMM-detected market regime.\n\nAIOKA uses a Hidden Markov Model trained on 8 regime states to classify\nthe current BTC market structure.\n\n**Tier:** Free ✅\n**Cache TTL:** 300 seconds (5 min)\n**Rate limit:** 100 calls/day, 2/minute\n\n### Regime states\n- `BULL_TRENDING` — Strong uptrend\n- `BEAR_TRENDING` — Strong downtrend\n- `HIGH_VOLATILITY` — Elevated vol\n- `DISTRIBUTION` — Smart money selling\n- `WHALE_ACCUMULATION` — Large accumulation\n- `RISK_ON` — Risk-on environment\n- `LOW_VOLATILITY` — Compression\n- `ACCUMULATION` — Stealth accumulation","operationId":"get_regime_current_v1_regime_current_get","responses":{"200":{"description":"Current regime","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegimeCurrentResponse"}}}},"401":{"description":"Invalid or missing API key"},"429":{"description":"Rate limit exceeded"}},"security":[{"APIKeyHeader":[]}]}},"/v1/regime/history":{"get":{"tags":["Regime"],"summary":"Regime History (last 7 days)","description":"Returns paginated regime detection history.\n\n**Tier:** Basic ($49/mo) 🔒\n**Cache TTL:** 300 seconds\n**Rate limit:** 1,000 calls/day, 30/minute","operationId":"get_regime_history_v1_regime_history_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Page"}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","default":48,"title":"Per Page"}}],"responses":{"200":{"description":"Regime history","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegimeHistoryResponse"}}}},"401":{"description":"Invalid or missing API key"},"403":{"description":"Basic tier required"},"429":{"description":"Rate limit exceeded"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/regime/stats":{"get":{"tags":["Regime"],"summary":"Regime Performance Stats","description":"Historical Ghost Trader win rate and P&L aggregated by market regime.\n\nOnly validated trades (`is_valid=TRUE`) since the clean-slate date\n(2026-04-12) are counted. Regimes are sorted by win rate descending so\nthe best-performing regime always appears first.\n\n**Tier:** Free ✅\n**Cache TTL:** 300 seconds (5 min)\n**Rate limit:** Free 100/day, 2/min. Basic 1,000/day, 30/min. Pro 10,000/day, 100/min.\n\n### Response fields\n| Field | Type | Description |\n|-------|------|-------------|\n| `regimes` | array | Per-regime stats sorted by win_rate DESC |\n| `best_regime` | string \\| null | Regime with highest win rate (null when no trades) |\n| `worst_regime` | string \\| null | Regime with lowest win rate (null when no trades) |\n| `total_trades` | int | Total validated closed trades |\n| `overall_win_rate` | float | Win rate across all regimes (0-100) |\n| `since` | string | Clean-slate cutoff date (ISO 8601) |\n| `generated_at` | string | Prague CEST/CET timestamp |\n| `cached` | bool | Whether response was served from cache |\n| `cache_ttl_seconds` | int | Cache TTL in seconds |\n\n### RegimeStatsItem fields\n| Field | Type | Description |\n|-------|------|-------------|\n| `regime` | string | HMM regime name |\n| `trades` | int | Total trades in this regime |\n| `wins` | int | Winning trades (pnl > 0) |\n| `losses` | int | Losing trades (pnl ≤ 0) |\n| `win_rate` | float | Win rate 0-100 |\n| `avg_pnl_pct` | float | Average P&L % per trade |\n| `avg_hold_hours` | float | Average hold time in hours |\n| `total_pnl_usd` | float | Cumulative USD P&L in this regime |","operationId":"get_regime_stats_v1_regime_stats_get","responses":{"200":{"description":"Per-regime Ghost Trader performance statistics","content":{"application/json":{"schema":{"$ref":"#/components/schemas/RegimeStatsResponse"}}}},"401":{"description":"Invalid or missing API key"},"429":{"description":"Rate limit exceeded"}},"security":[{"APIKeyHeader":[]}]}},"/v1/tradingview/signal":{"get":{"tags":["TradingView"],"summary":"TradingView Pine Script Signal","description":"Flat, compact signal payload optimised for a Pine Script v5 indicator.\n\nResponse body is intentionally kept under 200 bytes — no nested objects,\nno lists, Unix epoch timestamp (integer) rather than ISO string — so\nhigh-frequency polling from a TradingView chart remains cheap on bandwidth\nand fast to parse in Pine Script.\n\n**Tier:** Free ✅\n**Cache TTL:** 60 seconds (server-side)\n**Rate limit:** Free 100/day, 2/min. Basic 1,000/day, 30/min. Pro 10,000/day, 100/min.\n\n### Response fields\n| Field | Type | Description |\n|-------|------|-------------|\n| `verdict` | string | Judiciary ruling (STRONG_BUY, BUY, ACCUMULATE, HOLD, REDUCE, SELL, STRONG_SELL, PENDING) |\n| `confidence` | float | Judiciary composite confidence 0-100 |\n| `regime` | string | Current HMM regime |\n| `dark_pool` | int | Dark Pool composite score 0-100 |\n| `rsi` | float | BTC 1H RSI(14) |\n| `ema_200` | float | BTC 1H EMA(200) |\n| `btc_price` | float | Live BTC spot price |\n| `ghost_status` | string | `WAITING` or `IN_POSITION` |\n| `timestamp` | int | Unix epoch seconds |\n\n### Pine Script quick start\nDownload the free AIOKA indicator at\n[docs.aioka.io/tradingview](https://docs.aioka.io/tradingview), paste your\nAPI key in the indicator settings, and it will poll this endpoint once per\nbar close.","operationId":"get_tradingview_signal_v1_tradingview_signal_get","responses":{"200":{"description":"Latest AIOKA signal bundle for Pine Script.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TradingViewSignalResponse"}}}},"401":{"description":"Invalid or missing API key"},"429":{"description":"Rate limit exceeded (daily or per-minute)"}},"security":[{"APIKeyHeader":[]}]}},"/v1/signals/latest":{"get":{"tags":["Signals"],"summary":"Latest Signal Snapshot","description":"Returns the current snapshot of all 27 market signals.\n\nAIOKA aggregates on-chain, macro, options, and liquidity data from\nmultiple providers into a unified signal feed.\n\n**Tier:** Basic ($49/mo) 🔒\n**Cache TTL:** 30 seconds\n**Rate limit:** 1,000 calls/day, 30/minute\n\n### Signal categories\n- **On-chain**: SOPR, MVRV Z-Score, NUPL, Hash Ribbon, Exchange Flow\n- **Macro**: US10Y, DXY, Gold, BTC-NASDAQ Correlation\n- **Options**: Deribit Put/Call, DVOL, Options OI\n- **Liquidity**: Stablecoin Mint, Whale Flow, Entity Pressure\n- **Liquidation**: Directional Bias, Cascade Risk, Proximity Alert","operationId":"get_signals_latest_v1_signals_latest_get","responses":{"200":{"description":"Signal snapshot","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignalsLatestResponse"}}}},"401":{"description":"Invalid or missing API key"},"403":{"description":"Basic tier required"},"429":{"description":"Rate limit exceeded"}},"security":[{"APIKeyHeader":[]}]}},"/v1/signals/history":{"get":{"tags":["Signals"],"summary":"Signal History","description":"Returns historical signal values from the analytics store.\n\n**Tier:** Pro ($199/mo) 🔒\n**Cache TTL:** 300 seconds\n**Rate limit:** 10,000 calls/day, 100/minute","operationId":"get_signals_history_v1_signals_history_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"signal_key","in":"query","required":false,"schema":{"type":"string","default":"BTC_RSI","title":"Signal Key"}},{"name":"page","in":"query","required":false,"schema":{"type":"integer","default":1,"title":"Page"}},{"name":"per_page","in":"query","required":false,"schema":{"type":"integer","default":100,"title":"Per Page"}}],"responses":{"200":{"description":"Signal history","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignalsHistoryResponse"}}}},"401":{"description":"Invalid or missing API key"},"403":{"description":"Pro tier required"},"429":{"description":"Rate limit exceeded"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/signals/weights":{"get":{"tags":["Signals"],"summary":"Adaptive Signal Weights","description":"Returns the current per-signal, per-regime adaptive weight multipliers that\nAIOKA applies to the raw signal feed before the verdict is computed.\n\nMultipliers are learned from the outcomes of recent closed Ghost Trader\ntrades. A multiplier above 1.0 means AIOKA currently amplifies that signal\nin the active market regime; a multiplier below 1.0 means it is damped.\n\nSafeguards (always enforced):\n- `multiplier` is clamped to `[0.3, 2.0]`\n- Multipliers with `data_points < 10` fall back to `1.0` (base)\n- Weights never shift more than 20% per update cycle\n- Weights are isolated per regime (no bleed between regimes)\n\n**Tier:** Pro ($199/mo) 🔒\n**Cache TTL:** 300 seconds\n**Rate limit:** Pro tier limits","operationId":"get_signals_weights_v1_signals_weights_get","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"regime","in":"query","required":false,"schema":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Regime"}}],"responses":{"200":{"description":"Adaptive weights snapshot for the requested regime","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SignalsWeightsResponse"}}}},"401":{"description":"Invalid or missing API key"},"403":{"description":"Pro tier required"},"429":{"description":"Rate limit exceeded"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/integrations/zapier/signal":{"get":{"tags":["Integrations"],"summary":"Zapier / n8n Signal","description":"Compact signal payload for Zapier and n8n automation workflows.\n\nUse `id` as the Zapier deduplication key — it changes every time the verdict\nchanges, so your Zap only triggers on new rulings.\n\nThe `timestamp` field is ISO 8601 with Prague TZ offset so it renders\ncorrectly in Zapier, Slack, and Telegram without reformatting.\n\n**Tier:** Basic ($49/mo) 🔒\n**Cache TTL:** 60 seconds (server-side)\n**Rate limit:** Basic 1,000/day, 30/min. Pro 10,000/day, 100/min.\n\n### Response fields\n| Field | Type | Description |\n|-------|------|-------------|\n| `id` | string | Deduplication key — changes on every new verdict |\n| `verdict` | string | Judiciary ruling (STRONG_BUY / BUY / ACCUMULATE / HOLD / REDUCE / SELL / STRONG_SELL / PENDING) |\n| `confidence` | float | Judiciary composite confidence 0-100 |\n| `regime` | string | Current HMM regime |\n| `dark_pool` | int | Dark Pool composite score 0-100 |\n| `rsi` | float | BTC 1H RSI(14) |\n| `ema_200` | float | BTC 1H EMA(200) |\n| `btc_price` | float | Live BTC spot price |\n| `ghost_status` | string | `WAITING` or `IN_POSITION` |\n| `timestamp` | string | ISO 8601 with Prague TZ offset |\n| `readable_time` | string | Human-readable Prague CEST/CET time |\n\n### Quick start\n1. Create a Zap with **Schedule by Zapier** (every 5 minutes)\n2. HTTP by Zapier: `GET https://api.aioka.io/v1/integrations/zapier/signal`\n   Header: `X-API-Key: YOUR_KEY`\n3. Filter: only continue when `id` differs from the stored value\n4. Slack / Telegram: post the `verdict` + `readable_time`","operationId":"get_zapier_signal_v1_integrations_zapier_signal_get","responses":{"200":{"description":"Latest AIOKA signal bundle for automation workflows.","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ZapierSignalResponse"}}}},"401":{"description":"Invalid or missing API key"},"403":{"description":"Basic tier or higher required"},"429":{"description":"Rate limit exceeded (daily or per-minute)"}},"security":[{"APIKeyHeader":[]}]}},"/v1/council/latest":{"get":{"tags":["Council"],"summary":"Latest AI Council Session","description":"Returns the most recent AI Council session results including all 6 agent verdicts,\nChief Judge ruling, and consensus.\n\n**Tier:** Pro ($199/mo) 🔒\n**Cache TTL:** 60 seconds\n**Rate limit:** 10,000 calls/day, 100/minute\n\n### The 6 Agents\n| Agent | Domain |\n|-------|--------|\n| CHAIN ORACLE | On-chain analytics |\n| MACRO SAGE | Macro environment |\n| SENTIMENT MONK | Market sentiment |\n| TECH HAWK | Technical analysis |\n| LIQUIDITY GUARDIAN | Liquidity depth |\n| RISK SHIELD | Risk assessment |","operationId":"get_council_latest_v1_council_latest_get","responses":{"200":{"description":"Latest council session","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CouncilLatestResponse"}}}},"401":{"description":"Invalid or missing API key"},"403":{"description":"Pro tier required"},"429":{"description":"Rate limit exceeded"}},"security":[{"APIKeyHeader":[]}]}},"/v1/btc/council/run":{"post":{"tags":["BTC Ghost Trader"],"summary":"Manually trigger BTC Council deliberation","description":"Triggers an out-of-band BTC Council deliberation and persists the\nverdict to ``council_verdicts``. Returns the freshly persisted\nverdict (or last known verdict on convene failure).\n\n**Tier:** Pro\n**Rate limit:** 5/min (per tier; council is API-cost heavy)","operationId":"run_btc_council_v1_btc_council_run_post","responses":{"200":{"description":"Council run result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BTCCouncilRunResponse"}}}},"401":{"description":"Missing or invalid API key"},"403":{"description":"Tier insufficient"},"503":{"description":"Council unavailable -- Anthropic API misconfigured"}},"security":[{"APIKeyHeader":[]}]}},"/v1/ghost/stats":{"get":{"tags":["Ghost Trader"],"summary":"Ghost Trader Validated Trade Count","description":"Returns the count of validated (real, non-synthetic) Ghost Trader trades since the\nSprint 164 deployment on 2026-04-12 (track record restart — see CLAUDE.md).\n\n**Tier:** Public ✅\n**Cache:** 300s (Redis)\n**Use:** Website stats widgets, public track record display","operationId":"get_ghost_stats_v1_ghost_stats_get","responses":{"200":{"description":"Trade count since production launch","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GhostStatsResponse"}}}}},"security":[]}},"/v1/ghost/signal":{"get":{"tags":["Ghost Trader"],"summary":"Ghost Trader Entry Signal","description":"Returns the current Ghost Trader entry signal derived from live 7/7 gate conditions.\n\n⚠️ **This is a signal, not financial advice.** AIOKA Ghost Trader is a paper-trading\nsimulation. Never make real financial decisions based solely on this signal.\n\n**Tier:** Pro ($199/mo) 🔒\n**Cache TTL:** 30 seconds\n**Rate limit:** 10,000 calls/day, 100/minute\n\n### Signal values\n| Signal | Meaning |\n|--------|---------|\n| `ENTER` | All entry conditions met — Ghost Trader would open a position |\n| `HOLD` | Conditions not fully met — waiting for better setup |\n| `IN_POSITION` | Ghost Trader already has an open trade |","operationId":"get_ghost_signal_v1_ghost_signal_get","responses":{"200":{"description":"Ghost Trader signal","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GhostSignalResponse"}}}},"401":{"description":"Invalid or missing API key"},"403":{"description":"Pro tier required"},"429":{"description":"Rate limit exceeded"}},"security":[{"APIKeyHeader":[]}]}},"/v1/ghost/status":{"get":{"tags":["Ghost Trader"],"summary":"Ghost Trader 7-Condition Gate Status","description":"Returns the full Ghost Trader 7/7 entry gate breakdown — pass/fail for every\nhard gate plus the live market context that feeds them.\n\nPowers the AIOKA Live Trading Dashboard at aioka.io/live.\n\n**Tier:** Pro ✅\n**Cache TTL:** 60 seconds\n**Rate limit:** Pro tier limits (10,000 calls/day, 100/minute)\n**Read-only:** never writes to any trading table.\n\n### The 7 hard gates\n\n| Gate | Field | Meaning |\n|------|-------|---------|\n| 1 | `judiciary_ok` | Latest Judiciary verdict is BUY / STRONG_BUY / ACCUMULATE |\n| 2 | `council_ok` | AI Council ruling bullish, confidence ≥0.75, ≥4 bullish agents |\n| 3 | `ema_ok` | BTC price is +0.2% to +2.0% above EMA 200 (1H) |\n| 4 | `regime_favorable` | Market regime in WHALE_ACCUMULATION / ACCUMULATION / BULL_TRENDING / RISK_ON / LOW_VOLATILITY |\n| 5 | `session_favorable` | Not Friday 22:00 → Sunday 06:00 CEST (weekend low-liquidity block) |\n| 6 | `momentum_ok` | BTC change vs 60 min ago is not FALLING (> -0.3%) |\n| 7 | `quality_ok` | Composite entry quality score ≥ 65 (0–115 scale) |\n\n`conditions_met` is the count of gates currently passing. Ghost Trader only\nopens a new position when all 7 are true (`conditions_met == conditions_required`).","operationId":"get_ghost_status_v1_ghost_status_get","responses":{"200":{"description":"Live Ghost Trader gate breakdown","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GhostStatusResponse"}}}},"401":{"description":"Invalid or missing API key"},"403":{"description":"Pro tier required"},"429":{"description":"Rate limit exceeded"}},"security":[{"APIKeyHeader":[]}]}},"/v1/ghost/track-record":{"get":{"tags":["Ghost Trader"],"summary":"Ghost Trader Full Track Record","description":"Returns the full validated Ghost Trader track record since the Sprint 164 deployment\n(2026-04-12 17:55 UTC — see CLAUDE.md clean slate). Each entry includes entry/exit\nprices, hold time, PnL, exit reason, and the entry-time council ruling. Derived\naggregates (total PnL, win rate, best/worst trade, avg hold, avg PnL per trade) and a\ncumulative equity curve are included so the client can render the full track record\npage from a single response.\n\n⚠️ **This is paper-trading data.** AIOKA Ghost Trader is a simulation and never places\nreal orders via this endpoint.\n\n**Tier:** Public ✅\n**Cache:** 300s (Redis)\n**Use:** aioka.io/track-record page","operationId":"get_ghost_track_record_v1_ghost_track_record_get","responses":{"200":{"description":"Full validated track record","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GhostTrackRecordResponse"}}}}},"security":[]}},"/v1/ghost/regime-performance":{"get":{"tags":["Ghost Trader"],"summary":"Multi-asset Performance by Regime","description":"Returns Ghost Trader performance aggregated by market regime across **all 7\ncouncils** (BTC, ETH, SOL, ADA, TAO, Gold, EUR/USD).\n\nEach closed validated trade carries the regime label persisted at entry. The\nendpoint UNIONs every per-asset table and groups by regime so the aioka.io\n\"Performance by Regime\" widget can paint a single chart spanning the whole\nsystem.\n\n**Tier:** Free (public, no API key required) ✅\n**Cache TTL:** 300 seconds (5 min)\n**Rate limit:** 60 calls / IP / minute (SEC-5)\n\n### Response fields\n| Field | Type | Description |\n|-------|------|-------------|\n| `regimes` | array | Per-regime rows, sorted by trades DESC then win_rate DESC |\n| `total_trades` | int | Sum of trades across all regimes (excludes NULL regime) |\n| `assets_included` | array | Asset tables that contributed (always the 7 councils) |\n| `since` | string | Clean-slate cutoff date (ISO 8601, 2026-04-12) |\n| `generated_at` | string | UTC ISO timestamp |\n| `cached` | bool | Whether response was served from cache |\n| `cache_ttl_seconds` | int | Cache TTL |\n\n### Per-regime row\n| Field | Type | Description |\n|-------|------|-------------|\n| `regime` | string | Regime label (e.g. `BULL_TRENDING`, `SAFE_HAVEN_DEMAND`) |\n| `trades` | int | Total trades closed in this regime |\n| `wins` | int | Trades with pnl > 0 |\n| `losses` | int | Trades with pnl <= 0 |\n| `win_rate` | float | Fraction 0.0-1.0 (0.833 = 83.3%) |\n| `avg_pnl_pct` | float | Mean PnL per trade as percentage points |\n| `total_pnl` | float | Cumulative USD PnL within this regime |","operationId":"get_ghost_regime_performance_v1_ghost_regime_performance_get","responses":{"200":{"description":"Multi-asset regime performance aggregation","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GhostRegimePerformanceResponse"}}}},"429":{"description":"Rate limit exceeded"}},"security":[]}},"/v1/eth/status":{"get":{"tags":["ETH Ghost Trader"],"summary":"ETH Ghost Trader Status","description":"Returns the current state of the ETH Ghost Trader: open position (if\nany), latest ETH council verdict, market regime, ETH price, RSI(1H),\nand EMA 200.\n\n**Tier:** Public ✅\n**Cache:** None -- always live\n**Use:** aioka.io/live ETH panel\n\nRead-only -- never writes to any trading table.","operationId":"get_eth_status_v1_eth_status_get","responses":{"200":{"description":"Live ETH Ghost Trader status","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ETHStatusResponse"}}}}},"security":[]}},"/v1/eth/track-record":{"get":{"tags":["ETH Ghost Trader"],"summary":"ETH Ghost Trader Track Record","description":"Returns the full ETH trade history with derived performance stats\n(total trades, win rate, total PnL, avg hold time, best/worst trade).\n\n⚠️ **Paper-trading data.** AIOKA ETH Ghost Trader is a simulation and\nnever places real orders via this endpoint.\n\n**Tier:** Public ✅\n**Cache:** None\n**Use:** aioka.io/track-record ETH tab","operationId":"get_eth_track_record_v1_eth_track_record_get","responses":{"200":{"description":"ETH trade history","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ETHTrackRecordResponse"}}}}},"security":[]}},"/v1/eth/council":{"get":{"tags":["ETH Ghost Trader"],"summary":"Latest ETH Council Verdict","description":"Latest ETH Council verdict with full agent breakdown (6 ETH Phase 2\nspecialist agents), chief rationale, and signal snapshot at convene time.\n\n**Tier:** Pro\n**Cache:** None\n**Rate limit:** 30/min (per tier)","operationId":"get_eth_council_v1_eth_council_get","responses":{"200":{"description":"ETH council verdict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ETHCouncilResponse"}}}},"401":{"description":"Missing or invalid API key"},"403":{"description":"Tier insufficient"}},"security":[{"APIKeyHeader":[]}]}},"/v1/eth/council/run":{"post":{"tags":["ETH Ghost Trader"],"summary":"Manually trigger ETH Council deliberation","description":"Triggers an out-of-band ETH Council deliberation and persists the\nverdict to ``eth_council_verdicts``. Returns the freshly persisted\nverdict (or last known verdict on convene failure).\n\n**Tier:** Pro\n**Rate limit:** 5/min (per tier; council is API-cost heavy)","operationId":"run_eth_council_v1_eth_council_run_post","responses":{"200":{"description":"Council run result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ETHCouncilRunResponse"}}}},"401":{"description":"Missing or invalid API key"},"403":{"description":"Tier insufficient"},"503":{"description":"Council unavailable -- Anthropic API misconfigured"}},"security":[{"APIKeyHeader":[]}]}},"/v1/sol/status":{"get":{"tags":["SOL Ghost Trader"],"summary":"SOL Ghost Trader Status","description":"Returns the current state of the SOL Ghost Trader: open position (if\nany), latest SOL council verdict, market regime, SOL price, RSI(1H),\nEMA 200, and Solana network health (unique to SOL -- Gate 0).\n\n**Tier:** Public\n**Cache:** None -- always live\n**Use:** aioka.io/live SOL panel\n\nRead-only -- never writes to any trading table.","operationId":"get_sol_status_v1_sol_status_get","responses":{"200":{"description":"Live SOL Ghost Trader status","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SOLStatusResponse"}}}}},"security":[]}},"/v1/sol/track-record":{"get":{"tags":["SOL Ghost Trader"],"summary":"SOL Ghost Trader Track Record","description":"Returns the full SOL trade history with derived performance stats\n(total trades, win rate, total PnL, avg hold time, best/worst trade).\n\nPaper-trading data. AIOKA SOL Ghost Trader is a simulation and never\nplaces real orders via this endpoint until 10 validated paper trades\nhave been completed.\n\n**Tier:** Public\n**Cache:** None\n**Use:** aioka.io/track-record SOL tab","operationId":"get_sol_track_record_v1_sol_track_record_get","responses":{"200":{"description":"SOL trade history","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SOLTrackRecordResponse"}}}}},"security":[]}},"/v1/sol/council":{"get":{"tags":["SOL Ghost Trader"],"summary":"Latest SOL Council Verdict","description":"Latest SOL Council verdict with full agent breakdown (6 SOL Phase 2\nspecialist agents -- NETWORK_SENTINEL, MACRO_SAGE, ECOSYSTEM_ANALYST,\nMOMENTUM_HUNTER, LIQUIDITY_GUARDIAN, RISK_WARDEN), chief rationale,\nand signal snapshot at convene time.\n\n**Tier:** Pro\n**Cache:** None\n**Rate limit:** 30/min (per tier)","operationId":"get_sol_council_v1_sol_council_get","responses":{"200":{"description":"SOL council verdict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SOLCouncilResponse"}}}},"401":{"description":"Missing or invalid API key"},"403":{"description":"Tier insufficient"}},"security":[{"APIKeyHeader":[]}]}},"/v1/sol/council/run":{"post":{"tags":["SOL Ghost Trader"],"summary":"Manually trigger SOL Council deliberation","description":"Triggers an out-of-band SOL Council deliberation and persists the\nverdict to ``sol_council_verdicts``. Returns the freshly persisted\nverdict (or last known verdict on convene failure).\n\n**Tier:** Pro\n**Rate limit:** 5/min (per tier; council is API-cost heavy)","operationId":"run_sol_council_v1_sol_council_run_post","responses":{"200":{"description":"Council run result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/SOLCouncilRunResponse"}}}},"401":{"description":"Missing or invalid API key"},"403":{"description":"Tier insufficient"},"503":{"description":"Council unavailable -- Anthropic API misconfigured"}},"security":[{"APIKeyHeader":[]}]}},"/v1/ada/status":{"get":{"tags":["ADA Ghost Trader"],"summary":"ADA Ghost Trader Status","description":"Returns the current state of the ADA Ghost Trader: open position (if\nany), latest ADA council verdict, market regime, ADA price, RSI(1H),\nEMA 200. ADA has no Gate 0 (Cardano has no significant network\noutages).\n\n**Tier:** Public\n**Cache:** None -- always live\n**Use:** aioka.io/live ADA panel\n\nRead-only -- never writes to any trading table.","operationId":"get_ada_status_v1_ada_status_get","responses":{"200":{"description":"Live ADA Ghost Trader status","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ADAStatusResponse"}}}}},"security":[]}},"/v1/ada/track-record":{"get":{"tags":["ADA Ghost Trader"],"summary":"ADA Ghost Trader Track Record","description":"Returns the full ADA trade history with derived performance stats\n(total trades, win rate, total PnL, avg hold time, best/worst trade).\n\nPaper-trading data. AIOKA ADA Ghost Trader is a simulation and never\nplaces real orders via this endpoint until 10 validated paper trades\nhave been completed.\n\n**Tier:** Public\n**Cache:** None\n**Use:** aioka.io/track-record ADA tab","operationId":"get_ada_track_record_v1_ada_track_record_get","responses":{"200":{"description":"ADA trade history","content":{"application/json":{"schema":{"$ref":"#/components/schemas/ADATrackRecordResponse"}}}}},"security":[]}},"/v1/tao/status":{"get":{"tags":["TAO Ghost Trader"],"summary":"TAO Ghost Trader Status","description":"Returns the current state of the TAO Ghost Trader: open position (if\nany), latest TAO council verdict + risk flags, market regime, TAO price,\nRSI(1H), EMA 200, and TAO order-book liquidity status (Gate 0).\n\n**Tier:** Free (no auth)\n**Cache:** None -- always live\n**Use:** aioka.io/live TAO panel\n\nRead-only -- never writes to any trading table.","operationId":"get_tao_status_v1_tao_status_get","responses":{"200":{"description":"Live TAO Ghost Trader status","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TAOStatusResponse"}}}}},"security":[]}},"/v1/tao/track-record":{"get":{"tags":["TAO Ghost Trader"],"summary":"TAO Ghost Trader Track Record","description":"Returns the full TAO trade history with derived performance stats\n(total trades, validated paper trades X/10, win rate, total PnL,\navg hold time, best/worst trade).\n\nPaper-trading data. AIOKA TAO Ghost Trader runs in paper mode until\n10 validated paper trades have closed. Live trading remains gated\nbehind an explicit follow-up sprint with K-1 verification.\n\n**Tier:** Free (no auth)\n**Cache:** None\n**Use:** aioka.io/track-record TAO tab","operationId":"get_tao_track_record_v1_tao_track_record_get","responses":{"200":{"description":"TAO trade history","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TAOTrackRecordResponse"}}}}},"security":[]}},"/v1/tao/council":{"get":{"tags":["TAO Ghost Trader"],"summary":"Latest TAO Council Verdict","description":"Latest TAO Council verdict with full agent breakdown, risk flags,\nchief rationale, and signal snapshot at convene time.\n\n**Tier:** Pro\n**Cache:** None\n**Rate limit:** 30/min (per tier)","operationId":"get_tao_council_v1_tao_council_get","responses":{"200":{"description":"TAO council verdict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TAOCouncilResponse"}}}},"401":{"description":"Missing or invalid API key"},"403":{"description":"Tier insufficient"}},"security":[{"APIKeyHeader":[]}]}},"/v1/tao/signals":{"get":{"tags":["TAO Ghost Trader"],"summary":"Live TAO Signals Snapshot","description":"Returns the latest readings of all 9 TAO-specific signals plus the\nliquidity floor probe (Gate 0). Each signal includes value, direction\n(BULLISH / BEARISH / NEUTRAL / UNKNOWN), source, and detail string.\n\n**Tier:** Pro\n**Cache:** None (fetches fresh on every request -- expect 1-3 s)\n**Rate limit:** 30/min (per tier)","operationId":"get_tao_signals_v1_tao_signals_get","responses":{"200":{"description":"TAO signals snapshot","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TAOSignalsResponse"}}}},"401":{"description":"Missing or invalid API key"},"403":{"description":"Tier insufficient"}},"security":[{"APIKeyHeader":[]}]}},"/v1/tao/council/run":{"post":{"tags":["TAO Ghost Trader"],"summary":"Manually trigger TAO Council deliberation","description":"Triggers an out-of-band TAO Council deliberation and persists the\nverdict to ``tao_council_verdicts``. Returns the freshly persisted\nverdict (or last known verdict on convene failure).\n\n**Tier:** Pro\n**Rate limit:** 5/min (per tier; council is API-cost heavy)","operationId":"run_tao_council_v1_tao_council_run_post","responses":{"200":{"description":"Council run result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/TAOCouncilRunResponse"}}}},"401":{"description":"Missing or invalid API key"},"403":{"description":"Tier insufficient"},"503":{"description":"Council unavailable -- Anthropic API misconfigured"}},"security":[{"APIKeyHeader":[]}]}},"/v1/commodities/gold/status":{"get":{"tags":["Gold (XAU/USD) Ghost Trader"],"summary":"Gold Ghost Trader Status","description":"Returns the current state of the Gold (XAU/USD) Ghost Trader: open\nposition (if any), latest Gold council verdict, market regime, Gold\nspot price, RSI(1H), EMA 200, current session label\n(LONDON/NEW_YORK/OVERLAP/WEEKEND_CLOSED/DAILY_BREAK), and 10Y TIPS yield\ndirection (Gate 8 audit).\n\n**Tier:** Free (no auth)\n**Cache:** None -- always live\n**Use:** aioka.io/live Gold panel\n\nRead-only -- never writes to any trading table.","operationId":"get_gold_status_v1_commodities_gold_status_get","responses":{"200":{"description":"Live Gold Ghost Trader status","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoldStatusResponse"}}}}},"security":[]}},"/v1/commodities/gold/track-record":{"get":{"tags":["Gold (XAU/USD) Ghost Trader"],"summary":"Gold Ghost Trader Track Record","description":"Returns the full Gold trade history with derived performance stats\n(total trades, validated paper trades X/10, win rate, total PnL,\navg hold time, best/worst trade).\n\nPaper-trading data. AIOKA Gold Ghost Trader runs in paper mode until\n10 validated paper trades have closed AND Sprint 187b wires the live\nbroker.\n\n**Tier:** Free (no auth)\n**Cache:** None\n**Use:** aioka.io/track-record Gold tab","operationId":"get_gold_track_record_v1_commodities_gold_track_record_get","responses":{"200":{"description":"Gold trade history","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoldTrackRecordResponse"}}}}},"security":[]}},"/v1/commodities/gold/council":{"get":{"tags":["Gold (XAU/USD) Ghost Trader"],"summary":"Latest Gold Council Verdict","description":"Latest Gold Council verdict with full agent breakdown.\n\n**Tier:** Pro\n**Cache:** None\n**Rate limit:** 30/min (per tier)","operationId":"get_gold_council_v1_commodities_gold_council_get","responses":{"200":{"description":"Gold council verdict","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoldCouncilResponse"}}}},"401":{"description":"Missing or invalid API key"},"403":{"description":"Tier insufficient"}},"security":[{"APIKeyHeader":[]}]}},"/v1/commodities/gold/council/run":{"post":{"tags":["Gold (XAU/USD) Ghost Trader"],"summary":"Manually trigger Gold Council deliberation","description":"Returns the latest persisted Gold Council verdict. The actual council\nrefresh is dispatched by the internal app service (it talks to Anthropic\nand writes to Neon), so this endpoint reads the most recent persisted\nresult. To force a fresh refresh, use the ``/gold_council`` Telegram\ncommand on the internal service.\n\n**Tier:** Pro\n**Rate limit:** 5/min (per tier; council is API-cost heavy)","operationId":"run_gold_council_v1_commodities_gold_council_run_post","responses":{"200":{"description":"Council run result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/GoldCouncilRunResponse"}}}},"401":{"description":"Missing or invalid API key"},"403":{"description":"Tier insufficient"},"503":{"description":"Council unavailable"}},"security":[{"APIKeyHeader":[]}]}},"/v1/cycle/status":{"get":{"tags":["BTC Cycle Context"],"summary":"BTC Cycle Context","description":"Aggregated Bitcoin cycle context: deterministic CYCLE_PHASE classifier,\nPi Cycle Top status (Sprint 364), halving timing (Sprint 365 mempool.space),\non-chain valuation (MVRV_Z + NUPL + SOPR from Coin Metrics), and the\nlatest CYCLE_ANALYST agent plain-English narrative.\n\n**Tier:** Public ✅\n**Cache:** None -- always live from market_data\n**Use:** aioka.io/live Cycle Intelligence card + /cycle Telegram command\n\nRead-only -- never writes to any trading table.","operationId":"get_cycle_status_v1_cycle_status_get","responses":{"200":{"description":"Live BTC cycle context","content":{"application/json":{"schema":{"$ref":"#/components/schemas/CycleStatusResponse"}}}},"429":{"description":"Rate limit exceeded"}},"security":[]}},"/v1/forex/eurusd/status":{"get":{"tags":["EUR/USD (Forex) Ghost Trader"],"summary":"EUR/USD Forex Ghost Trader Status","description":"Returns the current state of the EUR/USD Forex Ghost Trader: open\nposition (if any), latest EUR/USD council verdict, market regime, EUR/USD\nspot price + bid/ask spread, RSI(1H), EMA 200, current session label\n(LONDON/OVERLAP/NEW_YORK/WEEKEND/CLOSED), and per-gate boolean evaluation\nfor all 9 entry gates.\n\n**Tier:** Free (no auth)\n**Cache:** None -- always live\n**Use:** aioka.io/live EUR/USD panel\n\nRead-only -- never writes to any trading table.\n\nSprint 186 -- first non-crypto, non-commodity asset. Field names use\nsnake_case throughout (deviation from camelCase convention used by\nETH / SOL / TAO / Gold endpoints).","operationId":"get_eurusd_status_v1_forex_eurusd_status_get","responses":{"200":{"description":"Live EUR/USD Ghost Trader status","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EURUSDStatusResponse"}}}},"429":{"description":"Rate limit exceeded"}},"security":[]}},"/v1/forex/eurusd/track-record":{"get":{"tags":["EUR/USD (Forex) Ghost Trader"],"summary":"EUR/USD Forex Ghost Trader Track Record","description":"Returns the full EUR/USD trade history with derived performance stats\n(total trades, validated paper trades X/10, win rate, total P&L in\nboth USD and pips, avg hold time, best/worst trade in USD).\n\nPaper-trading data. AIOKA EUR/USD Ghost Trader runs in paper mode until\n10 validated paper trades have closed AND post-validation approval is\ndocumented.\n\n**Tier:** Free (no auth)\n**Cache:** None\n**Use:** aioka.io/track-record EUR/USD tab\n\nSprint 186 -- field names use snake_case throughout.","operationId":"get_eurusd_track_record_v1_forex_eurusd_track_record_get","responses":{"200":{"description":"EUR/USD trade history","content":{"application/json":{"schema":{"$ref":"#/components/schemas/EURUSDTrackRecordResponse"}}}},"429":{"description":"Rate limit exceeded"}},"security":[]}},"/v1/backtest":{"post":{"tags":["Backtest"],"summary":"Run Historical Backtest","description":"Runs a read-only historical performance simulation using AIOKA Ghost Trader\nlogic against past market data stored in Neon DB.\n\n**Tier:** Pro ($199/mo) 🔒\n**Cache TTL:** 3600 seconds (1 hour)\n**Rate limit:** 10,000 calls/day, 100/minute\n**Max period:** 90 days\n\n⚠️ Results are based on simulated historical conditions.\nPast performance does not guarantee future results.","operationId":"run_backtest_v1_backtest_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/BacktestRequest"}}},"required":true},"responses":{"200":{"description":"Backtest results","content":{"application/json":{"schema":{"$ref":"#/components/schemas/BacktestResponse"}}}},"400":{"description":"Invalid date range or period > 90 days"},"401":{"description":"Invalid or missing API key"},"403":{"description":"Pro tier required"},"429":{"description":"Rate limit exceeded"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/v1/macro/correlation":{"get":{"tags":["Macro"],"summary":"Cross-Asset Macro Correlation","description":"Assess how current macro conditions affect BTC using rules-based analysis.\n\nEvaluates DXY, US 10Y Treasury yield, Gold (XAU), BTC-Nasdaq correlation,\nand BTC dominance. Returns a directional assessment and per-signal breakdown.\n\nNo Pearson computation — uses live signal values from the existing AIOKA\ndata pipeline. Zero new API calls; read-only against cached market data.\n\n**Tier:** Basic ($49/mo) 🔒\n**Cache TTL:** 300 seconds\n**Rate limit:** 1,000 calls/day, 30/minute\n\n### Score interpretation\n| btc_macro_score | overall_assessment |\n|---|---|\n| ≥ 0.60 | BULLISH — macro environment supports BTC |\n| 0.41–0.59 | NEUTRAL — mixed signals |\n| ≤ 0.40 | BEARISH — macro headwinds for BTC |\n\n### Signals evaluated\n- **DXY** — US Dollar Index (falling dollar = BTC tailwind)\n- **US10Y** — 10-Year Treasury yield (falling yields = lower opportunity cost)\n- **XAU_SPOT** — Gold spot price (spiking gold = risk-off headwind)\n- **BTC_NDX_CORR** — BTC-Nasdaq 7-day correlation (high corr + Nasdaq trend)\n- **BTC_DOMINANCE** — BTC market share (rising dominance = capital rotation in)","operationId":"get_macro_correlation_v1_macro_correlation_get","responses":{"200":{"description":"Macro correlation assessment","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MacroCorrelationResponse"}}}},"401":{"description":"Invalid or missing API key"},"403":{"description":"Basic tier required"},"429":{"description":"Rate limit exceeded"}},"security":[{"APIKeyHeader":[]}]}},"/v1/monte-carlo/btc":{"get":{"tags":["Monte Carlo"],"summary":"Monte Carlo BTC Strategy Simulation","description":"Run a 10,000-scenario Monte Carlo stress test of the Ghost Trader strategy.\n\nSimulates BTC price paths using Geometric Brownian Motion and measures\nstrategy robustness across all scenarios.\n\n**Tier:** Free ✅\n**Cache TTL:** 3600 seconds (1 hour — compute intensive)\n**Rate limit:** See tier limits\n\n### Output metrics\n- `win_rate` — fraction of scenarios producing a profit\n- `avg_pnl_usd` — mean P&L across all scenarios (USD)\n- `worst_case_usd` / `best_case_usd` — tail outcomes\n- `sharpe_ratio` — annualised risk-adjusted return\n- `max_drawdown_pct` — largest peak-to-trough drawdown (fraction)\n- `tp1_hit_rate` / `tp2_hit_rate` / `sl_hit_rate` — exit gate hit rates\n- `confidence_level` — LOW / MODERATE / HIGH / VERY HIGH","operationId":"get_btc_simulation_v1_monte_carlo_btc_get","responses":{"200":{"description":"Monte Carlo simulation results","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MonteCarloResponse"}}}},"401":{"description":"Invalid or missing API key"},"429":{"description":"Rate limit exceeded"}},"security":[{"APIKeyHeader":[]}]}},"/v1/monte-carlo/run-fresh":{"get":{"tags":["Monte Carlo"],"summary":"Force Fresh Monte Carlo Simulation (Admin)","description":"Forces a fresh 10,000-scenario Monte Carlo simulation, bypassing the cache.\n\n**Auth:** `X-API-Key` header must equal `AIOKA_INTERNAL_KEY` environment variable.\n**Cache:** Bypassed — always computes a fresh result.\n**Use case:** Admin verification, performance benchmarking, manual refresh.","operationId":"run_fresh_simulation_v1_monte_carlo_run_fresh_get","responses":{"200":{"description":"Fresh Monte Carlo simulation results","content":{"application/json":{"schema":{"$ref":"#/components/schemas/MonteCarloResponse"}}}},"401":{"description":"Admin key required or invalid"}}}},"/v1/stripe/checkout":{"post":{"tags":["Billing"],"summary":"Create Checkout Session","description":"Create a Stripe Checkout Session to subscribe to a paid tier.\n\n**API key required** — pass your free-tier key in `X-API-Key`.\nThe authenticated key is embedded in the Stripe session metadata so\nthe webhook upgrades the correct account regardless of the email\nentered during payment.\n\n**Available plans:**\n- Basic ($49/mo)\n- Pro ($199/mo)\n\nUse the Stripe Price ID issued for your AIOKA account (rotated periodically;\nno IDs are hardcoded -- always pull the current value from your dashboard).\n\nReturns a `checkout_url` -- redirect your user there to complete payment.","operationId":"create_checkout_v1_stripe_checkout_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/CheckoutRequest"}}},"required":true},"responses":{"200":{"description":"Checkout session created","content":{"application/json":{"schema":{}}}},"400":{"description":"Invalid price_id"},"401":{"description":"Missing or invalid API key"},"503":{"description":"Billing not configured"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}},"/v1/webhooks":{"get":{"tags":["Webhooks"],"summary":"List Webhooks","description":"List all webhook subscriptions for your API key.\n\n**Tier:** Basic 🔒\n**Note:** The webhook secret is NOT returned in list responses.","operationId":"list_webhooks_v1_webhooks_get","responses":{"200":{"description":"Webhook list","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookListResponse"}}}},"401":{"description":"Invalid or missing API key"},"403":{"description":"Basic tier or higher required"}},"security":[{"APIKeyHeader":[]}]},"post":{"tags":["Webhooks"],"summary":"Register Webhook","description":"Register a webhook URL to receive HMAC-SHA256-signed POST payloads when AIOKA events occur.\n\n**Supported events:**\n- `verdict.new` -- new Judiciary verdict produced\n- `council.new` -- new AI Council verdict produced\n- `regime.change` -- market regime changed\n- `ghost.signal` -- Ghost Trader detects entry opportunity (multi-asset: BTC, ETH, SOL, TAO, GOLD)\n- `ghost.tp1` -- Ghost Trader fires TP1 partial sell (Sprint 278)\n- `ghost.closed` -- Ghost Trader trade fully closed (Sprint 278)\n- `macro.alert` -- macro correlation crosses threshold\n\n**Tier:** Basic 🔒\n**Limit:** 5 webhooks per API key\n**Delivery:** HMAC-SHA256 signed via `X-AIOKA-Signature: sha256=<hex>` header\n**Retries:** up to 3 attempts with exponential backoff (5s, 25s, 125s)\n\nSee the `callbacks` block below for exact payload schemas (`GhostSignalPayload`, `GhostTP1Payload`, `GhostClosedPayload`).","operationId":"register_webhook_v1_webhooks_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookCreateRequest"}}},"required":true},"responses":{"200":{"description":"Webhook registered -- secret shown only once","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookResponse"}}}},"400":{"description":"Invalid URL, duplicate events, or limit exceeded"},"401":{"description":"Invalid or missing API key"},"403":{"description":"Basic tier or higher required"},"429":{"description":"Rate limit exceeded"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"callbacks":{"_ghost_signal_callback":{"{$request.body.url}":{"post":{"summary":"ghost.signal payload","description":"POST sent when Ghost Trader detects a new entry opportunity (BTC, ETH, SOL, TAO, GOLD).","operationId":"_ghost_signal_callback__request_body_url__post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GhostSignalPayload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"_ghost_tp1_callback":{"{$request.body.url}":{"post":{"summary":"ghost.tp1 payload","description":"POST sent when Ghost Trader fires a TP1 partial sell. Includes locked P&L and Break-Even Shield state.","operationId":"_ghost_tp1_callback__request_body_url__post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GhostTP1Payload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}},"_ghost_closed_callback":{"{$request.body.url}":{"post":{"summary":"ghost.closed payload","description":"POST sent when a Ghost Trader trade is fully closed. close_reason is one of the canonical labels.","operationId":"_ghost_closed_callback__request_body_url__post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/GhostClosedPayload"}}},"required":true},"responses":{"200":{"description":"Successful Response","content":{"application/json":{"schema":{}}}},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}}}},"security":[{"APIKeyHeader":[]}]}},"/v1/webhooks/{webhook_id}":{"delete":{"tags":["Webhooks"],"summary":"Delete Webhook","description":"Delete a webhook subscription by ID.\n\nOnly the API key that created the webhook can delete it.\n\n**Tier:** Basic 🔒","operationId":"delete_webhook_v1_webhooks__webhook_id__delete","security":[{"APIKeyHeader":[]}],"parameters":[{"name":"webhook_id","in":"path","required":true,"schema":{"type":"string","format":"uuid","title":"Webhook Id"}}],"responses":{"200":{"description":"Webhook deleted","content":{"application/json":{"schema":{"type":"object","title":"Response Delete Webhook V1 Webhooks  Webhook Id  Delete"}}}},"401":{"description":"Invalid or missing API key"},"403":{"description":"Basic tier or higher required"},"404":{"description":"Webhook not found or not yours"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}}}},"/v1/webhooks/test":{"post":{"tags":["Webhooks"],"summary":"Test Webhook Delivery","description":"Send a test payload to a registered webhook URL to verify connectivity.\n\n**Tier:** Basic 🔒","operationId":"test_webhook_v1_webhooks_test_post","requestBody":{"content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookTestRequest"}}},"required":true},"responses":{"200":{"description":"Test delivery result","content":{"application/json":{"schema":{"$ref":"#/components/schemas/WebhookTestResponse"}}}},"401":{"description":"Invalid or missing API key"},"403":{"description":"Basic tier or higher required"},"404":{"description":"Webhook not found or not yours"},"422":{"description":"Validation Error","content":{"application/json":{"schema":{"$ref":"#/components/schemas/HTTPValidationError"}}}}},"security":[{"APIKeyHeader":[]}]}}},"components":{"schemas":{"ADAStatusCurrentTrade":{"properties":{"entryPrice":{"type":"number","title":"Entryprice"},"sizeAda":{"type":"number","title":"Sizeada"},"pnlUsd":{"type":"number","title":"Pnlusd"},"pnlPct":{"type":"number","title":"Pnlpct"},"tp1Hit":{"type":"boolean","title":"Tp1Hit"},"stopLoss":{"type":"number","title":"Stoploss"},"tp1Target":{"type":"number","title":"Tp1Target"},"tp2Target":{"type":"number","title":"Tp2Target"},"hwm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Hwm"}},"type":"object","required":["entryPrice","sizeAda","pnlUsd","pnlPct","tp1Hit","stopLoss","tp1Target","tp2Target"],"title":"ADAStatusCurrentTrade"},"ADAStatusResponse":{"properties":{"status":{"type":"string","title":"Status"},"currentTrade":{"anyOf":[{"$ref":"#/components/schemas/ADAStatusCurrentTrade"},{"type":"null"}]},"latestVerdict":{"anyOf":[{"$ref":"#/components/schemas/ADAStatusVerdict"},{"type":"null"}]},"regime":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Regime"},"rsi1h":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Rsi1H"},"ema200":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ema200"},"adaPrice":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Adaprice"},"generatedAt":{"type":"string","format":"date-time","title":"Generatedat"},"gates":{"$ref":"#/components/schemas/AdaGates"}},"type":"object","required":["status","generatedAt"],"title":"ADAStatusResponse","example":{"adaPrice":0.4422,"ema200":0.438,"gates":{"council":true,"emaProximity":true,"gatesMet":7,"judiciary":true,"momentum":true,"quality":true,"regime":true,"session":true},"generatedAt":"2026-05-12T10:30:00+00:00","latestVerdict":{"confidence":0.71,"createdAt":"2026-05-12T10:15:00+00:00","ruling":"ACCUMULATE"},"regime":"ACCUMULATION","rsi1h":54.2,"status":"WAITING"}},"ADAStatusVerdict":{"properties":{"ruling":{"type":"string","title":"Ruling"},"confidence":{"type":"number","title":"Confidence"},"createdAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Createdat"},"plainExplanation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Plainexplanation"}},"type":"object","required":["ruling","confidence"],"title":"ADAStatusVerdict"},"ADATrackRecordResponse":{"properties":{"trades":{"items":{"$ref":"#/components/schemas/ADATrackRecordTrade"},"type":"array","title":"Trades"},"stats":{"$ref":"#/components/schemas/ADATrackRecordStats"}},"type":"object","required":["trades","stats"],"title":"ADATrackRecordResponse","example":{"stats":{"avgHoldMinutes":0.0,"bestTrade":0.0,"totalPnl":0.0,"totalTrades":0,"winRate":0.0,"worstTrade":0.0},"trades":[]}},"ADATrackRecordStats":{"properties":{"totalTrades":{"type":"integer","title":"Totaltrades"},"winRate":{"type":"number","title":"Winrate"},"totalPnl":{"type":"number","title":"Totalpnl"},"avgHoldMinutes":{"type":"number","title":"Avgholdminutes"},"bestTrade":{"type":"number","title":"Besttrade"},"worstTrade":{"type":"number","title":"Worsttrade"}},"type":"object","required":["totalTrades","winRate","totalPnl","avgHoldMinutes","bestTrade","worstTrade"],"title":"ADATrackRecordStats"},"ADATrackRecordTrade":{"properties":{"id":{"type":"string","title":"Id"},"entryTime":{"type":"string","title":"Entrytime"},"exitTime":{"type":"string","title":"Exittime"},"entryPrice":{"type":"number","title":"Entryprice"},"exitPrice":{"type":"number","title":"Exitprice"},"sizeAda":{"type":"number","title":"Sizeada"},"pnlUsd":{"type":"number","title":"Pnlusd"},"pnlPct":{"type":"number","title":"Pnlpct"},"tp1PnlUsd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Tp1Pnlusd"},"result":{"type":"string","title":"Result"},"mode":{"type":"string","title":"Mode"}},"type":"object","required":["id","entryTime","exitTime","entryPrice","exitPrice","sizeAda","pnlUsd","pnlPct","result","mode"],"title":"ADATrackRecordTrade"},"AdaGates":{"properties":{"judiciary":{"type":"boolean","title":"Judiciary","default":false},"council":{"type":"boolean","title":"Council","default":false},"emaProximity":{"type":"boolean","title":"Emaproximity","default":false},"regime":{"type":"boolean","title":"Regime","default":false},"quality":{"type":"boolean","title":"Quality","default":false},"momentum":{"type":"boolean","title":"Momentum","default":false},"session":{"type":"boolean","title":"Session","default":false},"gatesMet":{"type":"integer","title":"Gatesmet","default":0},"trigger":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Trigger"}},"type":"object","title":"AdaGates","description":"7-gate ADA entry decision. No Gate 0 (no network health for ADA)."},"AgentPerformanceItem":{"properties":{"agent_name":{"type":"string","title":"Agent Name"},"correct_calls":{"type":"integer","title":"Correct Calls"},"total_calls":{"type":"integer","title":"Total Calls"},"accuracy_pct":{"type":"number","title":"Accuracy Pct"},"last_updated":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Updated"}},"type":"object","required":["agent_name","correct_calls","total_calls","accuracy_pct"],"title":"AgentPerformanceItem","description":"Historical accuracy of a single AI Council agent (BTC only)."},"AgentPerformanceResponse":{"properties":{"asset":{"type":"string","title":"Asset"},"trades_analyzed":{"type":"integer","title":"Trades Analyzed"},"agents":{"items":{"$ref":"#/components/schemas/AgentPerformanceItem"},"type":"array","title":"Agents"},"cached":{"type":"boolean","title":"Cached"},"cache_ttl_seconds":{"type":"integer","title":"Cache Ttl Seconds"}},"type":"object","required":["asset","trades_analyzed","agents","cached","cache_ttl_seconds"],"title":"AgentPerformanceResponse","description":"`/v1/agents/performance` — per-agent accuracy across closed BTC trades.","example":{"agents":[{"accuracy_pct":77.8,"agent_name":"CHAIN ORACLE","correct_calls":14,"last_updated":"2026-05-20T14:32:00Z","total_calls":18},{"accuracy_pct":64.7,"agent_name":"TECH HAWK","correct_calls":11,"last_updated":"2026-05-20T14:32:00Z","total_calls":17}],"asset":"BTC","cache_ttl_seconds":3600,"cached":true,"trades_analyzed":18}},"AgentVerdictItem":{"properties":{"name":{"type":"string","title":"Name"},"vote":{"type":"string","title":"Vote"},"confidence":{"type":"number","title":"Confidence"},"reasoning":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Reasoning"}},"type":"object","required":["name","vote","confidence"],"title":"AgentVerdictItem","description":"Individual AI council agent vote — exposed via /v1/verdict/latest."},"AgentVote":{"properties":{"agent":{"type":"string","title":"Agent"},"ruling":{"type":"string","title":"Ruling"},"confidence":{"type":"number","title":"Confidence"},"thesis":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Thesis"}},"type":"object","required":["agent","ruling","confidence","thesis"],"title":"AgentVote"},"BTCCouncilRunResponse":{"properties":{"success":{"type":"boolean","title":"Success"},"verdict":{"anyOf":[{"$ref":"#/components/schemas/BTCCouncilVerdict"},{"type":"null"}]},"detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Detail"}},"type":"object","required":["success"],"title":"BTCCouncilRunResponse"},"BTCCouncilVerdict":{"properties":{"ruling":{"type":"string","title":"Ruling"},"confidence":{"type":"number","title":"Confidence"},"consensus":{"type":"string","title":"Consensus","default":"UNKNOWN"},"score":{"type":"number","title":"Score","default":0.0},"agentVotes":{"items":{},"type":"array","title":"Agentvotes"},"agentsFailed":{"type":"integer","title":"Agentsfailed","default":0},"createdAt":{"type":"string","format":"date-time","title":"Createdat"}},"type":"object","required":["ruling","confidence","createdAt"],"title":"BTCCouncilVerdict"},"BacktestRequest":{"properties":{"start_date":{"type":"string","title":"Start Date","description":"Start date (YYYY-MM-DD)"},"end_date":{"type":"string","title":"End Date","description":"End date (YYYY-MM-DD)"},"mode":{"type":"string","title":"Mode","description":"Entry mode: A or B","default":"B"}},"type":"object","required":["start_date","end_date"],"title":"BacktestRequest","example":{"end_date":"2026-04-01","mode":"B","start_date":"2026-01-01"}},"BacktestResponse":{"properties":{"total_trades":{"type":"integer","title":"Total Trades"},"win_rate":{"type":"number","title":"Win Rate"},"total_pnl_usd":{"type":"number","title":"Total Pnl Usd"},"max_drawdown_pct":{"type":"number","title":"Max Drawdown Pct"},"avg_hold_hours":{"type":"number","title":"Avg Hold Hours"},"period_days":{"type":"integer","title":"Period Days"},"mode":{"type":"string","title":"Mode"},"cached":{"type":"boolean","title":"Cached"},"cache_ttl_seconds":{"type":"integer","title":"Cache Ttl Seconds"}},"type":"object","required":["total_trades","win_rate","total_pnl_usd","max_drawdown_pct","avg_hold_hours","period_days","mode","cached","cache_ttl_seconds"],"title":"BacktestResponse"},"CheckoutRequest":{"properties":{"price_id":{"type":"string","title":"Price Id","default":""}},"type":"object","title":"CheckoutRequest"},"ContactRequest":{"properties":{"name":{"type":"string","maxLength":100,"minLength":2,"title":"Name"},"email":{"type":"string","maxLength":254,"title":"Email"},"subject":{"type":"string","title":"Subject"},"message":{"type":"string","maxLength":2000,"minLength":20,"title":"Message"},"website":{"type":"string","maxLength":500,"title":"Website","default":""}},"type":"object","required":["name","email","subject","message"],"title":"ContactRequest"},"ContactResponse":{"properties":{"message":{"type":"string","title":"Message"}},"type":"object","required":["message"],"title":"ContactResponse"},"CouncilLatestResponse":{"properties":{"ruling":{"type":"string","title":"Ruling"},"confidence":{"type":"number","title":"Confidence"},"consensus":{"type":"string","title":"Consensus"},"score":{"type":"number","title":"Score"},"agents":{"items":{"$ref":"#/components/schemas/AgentVote"},"type":"array","title":"Agents"},"agents_failed":{"type":"integer","title":"Agents Failed"},"session_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Session At"},"cached":{"type":"boolean","title":"Cached"},"cache_ttl_seconds":{"type":"integer","title":"Cache Ttl Seconds"}},"type":"object","required":["ruling","confidence","consensus","score","agents","agents_failed","session_at","cached","cache_ttl_seconds"],"title":"CouncilLatestResponse","example":{"agents":[{"agent":"CHAIN ORACLE","confidence":0.82,"ruling":"BUY","thesis":"On-chain accumulation signals are strong."}],"agents_failed":0,"cache_ttl_seconds":55,"cached":true,"confidence":0.77,"consensus":"BULLISH","ruling":"ACCUMULATE","score":0.42,"session_at":"2026-04-03T09:45:00Z"}},"CycleStatusResponse":{"properties":{"cyclePhase":{"type":"string","title":"Cyclephase","description":"BEAR_BOTTOM | EARLY_BULL | MID_BULL | LATE_BULL | TOP_SIGNAL | UNKNOWN"},"cyclePhaseVerdict":{"type":"string","title":"Cyclephaseverdict","description":"Deterministic verdict from the phase classifier (STRONG_BUY -> STRONG_AVOID)"},"mvrvZ":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Mvrvz"},"nupl":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Nupl"},"sopr":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Sopr"},"piCyclePhase":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Picyclephase"},"piCyclePhaseName":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Picyclephasename"},"piCycleGapPct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Picyclegappct"},"piCycleDaysToCross":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Picycledaystocross","description":"-1 sentinel = diverging / already crossed"},"piCycleMa111":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Picyclema111"},"piCycleMa3502x":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Picyclema3502X"},"blockHeight":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Blockheight"},"daysSinceHalving":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Dayssincehalving"},"daysToNextHalving":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Daystonexthalving"},"halvingPhase":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Halvingphase"},"plainExplanation":{"type":"string","title":"Plainexplanation","description":"2-3 sentence non-trader summary of the current cycle position"},"lastUpdated":{"type":"string","format":"date-time","title":"Lastupdated"},"lastCouncilVerdictAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Lastcouncilverdictat","description":"Most recent BTC council verdict timestamp (CYCLE_ANALYST agent runs as part of each council convene). NULL until first council fires."}},"type":"object","required":["cyclePhase","cyclePhaseVerdict","plainExplanation","lastUpdated"],"title":"CycleStatusResponse","description":"Aggregated Bitcoin cycle context.","example":{"blockHeight":895000,"cyclePhase":"MID_BULL","cyclePhaseVerdict":"HOLD","daysSinceHalving":380,"daysToNextHalving":1085,"halvingPhase":"HALVING_EARLY","lastCouncilVerdictAt":"2026-05-24T09:30:00+00:00","lastUpdated":"2026-05-24T10:00:00+00:00","mvrvZ":2.4,"nupl":0.58,"piCycleDaysToCross":240,"piCycleGapPct":-0.18,"piCycleMa111":95000,"piCycleMa3502x":115000,"piCyclePhase":2,"piCyclePhaseName":"MID_BULL","plainExplanation":"BTC sits mid-cycle, about 12 months past the April 2024 halving. Valuation is elevated but not euphoric -- typical hold zone.","sopr":1.04}},"ETHCouncilResponse":{"properties":{"verdict":{"anyOf":[{"$ref":"#/components/schemas/ETHCouncilVerdict"},{"type":"null"}]},"nextRefreshMinutes":{"type":"integer","title":"Nextrefreshminutes","default":30}},"type":"object","title":"ETHCouncilResponse"},"ETHCouncilRunResponse":{"properties":{"success":{"type":"boolean","title":"Success"},"verdict":{"anyOf":[{"$ref":"#/components/schemas/ETHCouncilVerdict"},{"type":"null"}]},"detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Detail"}},"type":"object","required":["success"],"title":"ETHCouncilRunResponse"},"ETHCouncilVerdict":{"properties":{"id":{"type":"string","title":"Id"},"ruling":{"type":"string","title":"Ruling"},"confidence":{"type":"number","title":"Confidence"},"agentVotes":{"type":"object","title":"Agentvotes"},"riskFlags":{"items":{"type":"string"},"type":"array","title":"Riskflags"},"chiefRationale":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chiefrationale"},"snapshotSignals":{"type":"object","title":"Snapshotsignals"},"plainExplanation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Plainexplanation"},"createdAt":{"type":"string","format":"date-time","title":"Createdat"}},"type":"object","required":["id","ruling","confidence","createdAt"],"title":"ETHCouncilVerdict"},"ETHStatusCurrentTrade":{"properties":{"entryPrice":{"type":"number","title":"Entryprice"},"sizeEth":{"type":"number","title":"Sizeeth"},"pnlUsd":{"type":"number","title":"Pnlusd"},"pnlPct":{"type":"number","title":"Pnlpct"},"tp1Hit":{"type":"boolean","title":"Tp1Hit"},"stopLoss":{"type":"number","title":"Stoploss"},"tp1Target":{"type":"number","title":"Tp1Target"},"tp2Target":{"type":"number","title":"Tp2Target"},"hwm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Hwm"}},"type":"object","required":["entryPrice","sizeEth","pnlUsd","pnlPct","tp1Hit","stopLoss","tp1Target","tp2Target"],"title":"ETHStatusCurrentTrade"},"ETHStatusResponse":{"properties":{"status":{"type":"string","title":"Status"},"currentTrade":{"anyOf":[{"$ref":"#/components/schemas/ETHStatusCurrentTrade"},{"type":"null"}]},"latestVerdict":{"anyOf":[{"$ref":"#/components/schemas/ETHStatusVerdict"},{"type":"null"}]},"regime":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Regime"},"rsi1h":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Rsi1H"},"ema200":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ema200"},"ethPrice":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ethprice"},"generatedAt":{"type":"string","format":"date-time","title":"Generatedat"},"gates":{"$ref":"#/components/schemas/EthGates"}},"type":"object","required":["status","generatedAt"],"title":"ETHStatusResponse","example":{"ema200":3210.5,"ethPrice":3265.0,"gates":{"council":true,"emaProximity":true,"gatesMet":7,"judiciary":true,"momentum":true,"quality":true,"regime":true,"session":true},"generatedAt":"2026-04-28T10:30:00+00:00","latestVerdict":{"confidence":0.72,"createdAt":"2026-04-28T10:15:00+00:00","ruling":"ACCUMULATE"},"regime":"ACCUMULATION","rsi1h":52.4,"status":"WAITING"}},"ETHStatusVerdict":{"properties":{"ruling":{"type":"string","title":"Ruling"},"confidence":{"type":"number","title":"Confidence"},"createdAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Createdat"}},"type":"object","required":["ruling","confidence"],"title":"ETHStatusVerdict"},"ETHTrackRecordResponse":{"properties":{"trades":{"items":{"$ref":"#/components/schemas/ETHTrackRecordTrade"},"type":"array","title":"Trades"},"stats":{"$ref":"#/components/schemas/ETHTrackRecordStats"}},"type":"object","required":["trades","stats"],"title":"ETHTrackRecordResponse","example":{"stats":{"avgHoldMinutes":0.0,"bestTrade":0.0,"totalPnl":0.0,"totalTrades":0,"winRate":0.0,"worstTrade":0.0},"trades":[]}},"ETHTrackRecordStats":{"properties":{"totalTrades":{"type":"integer","title":"Totaltrades"},"winRate":{"type":"number","title":"Winrate"},"totalPnl":{"type":"number","title":"Totalpnl"},"avgHoldMinutes":{"type":"number","title":"Avgholdminutes"},"bestTrade":{"type":"number","title":"Besttrade"},"worstTrade":{"type":"number","title":"Worsttrade"}},"type":"object","required":["totalTrades","winRate","totalPnl","avgHoldMinutes","bestTrade","worstTrade"],"title":"ETHTrackRecordStats"},"ETHTrackRecordTrade":{"properties":{"id":{"type":"string","title":"Id"},"entryTime":{"type":"string","title":"Entrytime"},"exitTime":{"type":"string","title":"Exittime"},"entryPrice":{"type":"number","title":"Entryprice"},"exitPrice":{"type":"number","title":"Exitprice"},"sizeEth":{"type":"number","title":"Sizeeth"},"pnlUsd":{"type":"number","title":"Pnlusd"},"pnlPct":{"type":"number","title":"Pnlpct"},"tp1PnlUsd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Tp1Pnlusd"},"result":{"type":"string","title":"Result"},"mode":{"type":"string","title":"Mode"}},"type":"object","required":["id","entryTime","exitTime","entryPrice","exitPrice","sizeEth","pnlUsd","pnlPct","result","mode"],"title":"ETHTrackRecordTrade"},"EURUSDGates":{"properties":{"news_blackout":{"type":"boolean","title":"News Blackout","default":false},"judiciary":{"type":"boolean","title":"Judiciary","default":false},"council":{"type":"boolean","title":"Council","default":false},"ema_proximity":{"type":"boolean","title":"Ema Proximity","default":false},"regime":{"type":"boolean","title":"Regime","default":false},"quality":{"type":"boolean","title":"Quality","default":false},"momentum":{"type":"boolean","title":"Momentum","default":false},"session":{"type":"boolean","title":"Session","default":false},"spread":{"type":"boolean","title":"Spread","default":false},"session_label":{"type":"string","title":"Session Label","description":"LONDON / OVERLAP / NEW_YORK / WEEKEND / CLOSED","default":"UNKNOWN"},"spread_pips":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Spread Pips","description":"Live ZEURZUSD bid-ask spread in pips (Gate 8 input)."},"macro_event_clear":{"type":"boolean","title":"Macro Event Clear","description":"Gate 0 outcome -- True when no high-impact event in window.","default":true},"gates_met":{"type":"integer","title":"Gates Met","description":"Count of passing gates (0-9).","default":0},"trigger":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Trigger","description":"Description of the first failing gate, or None when all 9 pass."}},"type":"object","title":"EURUSDGates","description":"Per-gate boolean status for the EUR/USD 9-gate entry framework.\n\nSpec enumerates Gate 0 (news blackout) through Gate 8 (spread)\ninclusive = 9 distinct checks. The header in the spec doc says\n\"8 gates\" colloquially but every evaluation row shipped here is\nrequired for entry."},"EURUSDStatusCurrentTrade":{"properties":{"entry_price":{"type":"number","title":"Entry Price"},"size_units":{"type":"number","title":"Size Units","description":"Position size in base-currency units (EUR)."},"pnl_usd":{"type":"number","title":"Pnl Usd"},"pnl_pips":{"type":"number","title":"Pnl Pips","description":"Live P&L in pips (Forex-native unit)."},"tp1_hit":{"type":"boolean","title":"Tp1 Hit"},"stop_loss":{"type":"number","title":"Stop Loss"},"tp1_price":{"type":"number","title":"Tp1 Price"},"tp2_price":{"type":"number","title":"Tp2 Price"},"hwm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Hwm"},"session":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session","description":"Session label at entry (LONDON / OVERLAP / NEW_YORK)."},"spread_at_entry":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Spread At Entry","description":"ZEURZUSD spread in pips at entry fill (Gate 8 audit)."}},"type":"object","required":["entry_price","size_units","pnl_usd","pnl_pips","tp1_hit","stop_loss","tp1_price","tp2_price"],"title":"EURUSDStatusCurrentTrade"},"EURUSDStatusResponse":{"properties":{"status":{"type":"string","title":"Status","description":"\"WAITING\" (no open EUR/USD trade) or \"IN_TRADE\"."},"current_trade":{"anyOf":[{"$ref":"#/components/schemas/EURUSDStatusCurrentTrade"},{"type":"null"}]},"latest_verdict":{"anyOf":[{"$ref":"#/components/schemas/EURUSDStatusVerdict"},{"type":"null"}]},"regime":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Regime"},"rsi_1h":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Rsi 1H"},"ema_200":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ema 200"},"eurusd_price":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Eurusd Price"},"eurusd_bid":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Eurusd Bid"},"eurusd_ask":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Eurusd Ask"},"spread_pips":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Spread Pips","description":"Live spread in pips (must be < 2.0 for Gate 8)."},"session_label":{"type":"string","title":"Session Label","description":"Current EUR/USD session. LONDON / OVERLAP / NEW_YORK = entry allowed; WEEKEND / CLOSED = blocked.","default":"UNKNOWN"},"paper_trades_validated":{"type":"integer","title":"Paper Trades Validated","description":"Closed validated EUR/USD paper trades (0-10 milestone).","default":0},"paper_mode":{"type":"boolean","title":"Paper Mode","description":"EURUSD_PAPER_MODE flag; live unlocked after 10 validated paper closes AND post-validation approval.","default":true},"generated_at":{"type":"string","format":"date-time","title":"Generated At"},"gates":{"$ref":"#/components/schemas/EURUSDGates"}},"type":"object","required":["status","generated_at"],"title":"EURUSDStatusResponse","example":{"ema_200":1.17721,"eurusd_ask":1.17841,"eurusd_bid":1.17828,"eurusd_price":1.17841,"gates":{"council":true,"ema_proximity":true,"gates_met":9,"judiciary":true,"macro_event_clear":true,"momentum":true,"news_blackout":true,"quality":true,"regime":true,"session":true,"session_label":"OVERLAP","spread":true,"spread_pips":1.3},"generated_at":"2026-05-09T14:30:00+00:00","latest_verdict":{"agent_votes":{},"confidence":0.71,"created_at":"2026-05-09T14:00:00+00:00","ruling":"ACCUMULATE"},"paper_mode":true,"paper_trades_validated":0,"regime":"ACCUMULATION","rsi_1h":56.2,"session_label":"OVERLAP","spread_pips":1.3,"status":"WAITING"}},"EURUSDStatusVerdict":{"properties":{"ruling":{"type":"string","title":"Ruling"},"confidence":{"type":"number","title":"Confidence"},"agent_votes":{"type":"object","title":"Agent Votes"},"created_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Created At"},"plain_explanation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Plain Explanation"}},"type":"object","required":["ruling","confidence"],"title":"EURUSDStatusVerdict"},"EURUSDTrackRecordResponse":{"properties":{"trades":{"items":{"$ref":"#/components/schemas/EURUSDTrackRecordTrade"},"type":"array","title":"Trades"},"stats":{"$ref":"#/components/schemas/EURUSDTrackRecordStats"}},"type":"object","required":["stats"],"title":"EURUSDTrackRecordResponse"},"EURUSDTrackRecordStats":{"properties":{"total_trades":{"type":"integer","title":"Total Trades"},"validated_paper_trades":{"type":"integer","title":"Validated Paper Trades"},"paper_validation_target":{"type":"integer","title":"Paper Validation Target","description":"Closed validated paper trades required before live mode.","default":10},"win_rate":{"type":"number","title":"Win Rate","description":"Percentage 0-100."},"total_pnl_usd":{"type":"number","title":"Total Pnl Usd"},"total_pnl_pips":{"type":"number","title":"Total Pnl Pips"},"avg_hold_minutes":{"type":"number","title":"Avg Hold Minutes"},"best_trade_usd":{"type":"number","title":"Best Trade Usd"},"worst_trade_usd":{"type":"number","title":"Worst Trade Usd"}},"type":"object","required":["total_trades","validated_paper_trades","win_rate","total_pnl_usd","total_pnl_pips","avg_hold_minutes","best_trade_usd","worst_trade_usd"],"title":"EURUSDTrackRecordStats"},"EURUSDTrackRecordTrade":{"properties":{"id":{"type":"string","title":"Id"},"entry_time":{"type":"string","title":"Entry Time"},"exit_time":{"type":"string","title":"Exit Time"},"entry_price":{"type":"number","title":"Entry Price"},"exit_price":{"type":"number","title":"Exit Price"},"size_units":{"type":"number","title":"Size Units"},"pnl_usd":{"type":"number","title":"Pnl Usd"},"pnl_pips":{"type":"number","title":"Pnl Pips"},"pnl_pct":{"type":"number","title":"Pnl Pct","description":"P&L as % of position cost (USD-based)."},"tp1_pnl_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Tp1 Pnl Usd"},"session":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session"},"spread_at_entry":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Spread At Entry"},"is_paper":{"type":"boolean","title":"Is Paper"},"result":{"type":"string","title":"Result","description":"\"WIN\" or \"LOSS\"."},"mode":{"type":"string","title":"Mode"}},"type":"object","required":["id","entry_time","exit_time","entry_price","exit_price","size_units","pnl_usd","pnl_pips","pnl_pct","is_paper","result","mode"],"title":"EURUSDTrackRecordTrade"},"EthGates":{"properties":{"judiciary":{"type":"boolean","title":"Judiciary","default":false},"council":{"type":"boolean","title":"Council","default":false},"emaProximity":{"type":"boolean","title":"Emaproximity","default":false},"regime":{"type":"boolean","title":"Regime","default":false},"quality":{"type":"boolean","title":"Quality","default":false},"momentum":{"type":"boolean","title":"Momentum","default":false},"session":{"type":"boolean","title":"Session","default":false},"gatesMet":{"type":"integer","title":"Gatesmet","default":0},"trigger":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Trigger"}},"type":"object","title":"EthGates"},"GhostClosedPayload":{"properties":{"trade_id":{"type":"string","title":"Trade Id","description":"UUID of the closed trade"},"asset":{"type":"string","title":"Asset","description":"Asset symbol (BTC, ETH, SOL, TAO, GOLD)"},"entry_price":{"anyOf":[{"type":"number"},{"type":"string"},{"type":"null"}],"title":"Entry Price","description":"Entry price in USD"},"exit_price":{"anyOf":[{"type":"number"},{"type":"string"},{"type":"null"}],"title":"Exit Price","description":"Exit price in USD"},"pnl":{"anyOf":[{"type":"number"},{"type":"string"},{"type":"null"}],"title":"Pnl","description":"Net P&L including TP1 partial in USD"},"close_reason":{"type":"string","title":"Close Reason","description":"Canonical close reason. One of: STOP_LOSS, TP1, TP2, TSL, BE_SHIELD, MANUAL, EXIT_SIGNAL, REGIME_EXIT, CONVICTION_EXIT, FLASH_CRASH"},"closed_at":{"type":"string","title":"Closed At","description":"ISO 8601 timestamp when the trade closed"}},"type":"object","required":["trade_id","asset","close_reason","closed_at"],"title":"GhostClosedPayload","description":"Payload schema for ghost.closed events -- trade fully closed."},"GhostRegimePerformanceItem":{"properties":{"regime":{"type":"string","title":"Regime"},"trades":{"type":"integer","title":"Trades"},"wins":{"type":"integer","title":"Wins"},"losses":{"type":"integer","title":"Losses"},"win_rate":{"type":"number","title":"Win Rate"},"avg_pnl_pct":{"type":"number","title":"Avg Pnl Pct"},"total_pnl":{"type":"number","title":"Total Pnl"}},"type":"object","required":["regime","trades","wins","losses","win_rate","avg_pnl_pct","total_pnl"],"title":"GhostRegimePerformanceItem","description":"Per-regime aggregated performance row."},"GhostRegimePerformanceResponse":{"properties":{"regimes":{"items":{"$ref":"#/components/schemas/GhostRegimePerformanceItem"},"type":"array","title":"Regimes"},"total_trades":{"type":"integer","title":"Total Trades"},"assets_included":{"items":{"type":"string"},"type":"array","title":"Assets Included"},"since":{"type":"string","title":"Since"},"generated_at":{"type":"string","format":"date-time","title":"Generated At"},"cached":{"type":"boolean","title":"Cached"},"cache_ttl_seconds":{"type":"integer","title":"Cache Ttl Seconds"}},"type":"object","required":["regimes","total_trades","assets_included","since","generated_at","cached","cache_ttl_seconds"],"title":"GhostRegimePerformanceResponse","example":{"assets_included":["BTC","ETH","SOL","TAO","ADA","GOLD","EURUSD"],"cache_ttl_seconds":300,"cached":false,"generated_at":"2026-05-13T10:00:00Z","regimes":[{"avg_pnl_pct":1.24,"losses":2,"regime":"BULL_TRENDING","total_pnl":847.5,"trades":12,"win_rate":0.833,"wins":10},{"avg_pnl_pct":0.92,"losses":1,"regime":"WHALE_ACCUMULATION","total_pnl":312.1,"trades":4,"win_rate":0.75,"wins":3}],"since":"2026-04-12","total_trades":16}},"GhostSignalPayload":{"properties":{"trade_id":{"type":"string","title":"Trade Id","description":"UUID of the new OPEN trade row"},"asset":{"type":"string","title":"Asset","description":"Asset symbol (BTC, ETH, SOL, TAO, GOLD)"},"entry_price":{"anyOf":[{"type":"number"},{"type":"string"},{"type":"null"}],"title":"Entry Price","description":"Entry price in USD"},"size":{"anyOf":[{"type":"number"},{"type":"string"},{"type":"null"}],"title":"Size","description":"Position size in asset units"},"entry_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Entry Mode","description":"Entry mode flag (single char)"},"entry_quality":{"anyOf":[{"type":"number"},{"type":"string"},{"type":"null"}],"title":"Entry Quality","description":"Entry quality score 0-100"},"created_at":{"type":"string","title":"Created At","description":"ISO 8601 timestamp of trade entry"}},"type":"object","required":["trade_id","asset","created_at"],"title":"GhostSignalPayload","description":"Payload schema for ghost.signal events (multi-asset)."},"GhostSignalResponse":{"properties":{"signal":{"type":"string","title":"Signal"},"entry_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Entry Mode"},"conditions_met":{"type":"integer","title":"Conditions Met"},"conditions_required":{"type":"integer","title":"Conditions Required"},"entry_quality":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Entry Quality"},"has_open_position":{"type":"boolean","title":"Has Open Position"},"rsi":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Rsi"},"ema_distance_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ema Distance Pct"},"regime":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Regime"},"timestamp":{"type":"string","format":"date-time","title":"Timestamp"},"cached":{"type":"boolean","title":"Cached"},"cache_ttl_seconds":{"type":"integer","title":"Cache Ttl Seconds"}},"type":"object","required":["signal","entry_mode","conditions_met","conditions_required","entry_quality","has_open_position","rsi","ema_distance_pct","regime","timestamp","cached","cache_ttl_seconds"],"title":"GhostSignalResponse","example":{"cache_ttl_seconds":28,"cached":true,"conditions_met":5,"conditions_required":7,"ema_distance_pct":0.85,"entry_mode":"B","has_open_position":false,"regime":"BULL_TRENDING","rsi":42.3,"signal":"HOLD","timestamp":"2026-04-03T10:22:00Z"}},"GhostStatsResponse":{"properties":{"validated_trades":{"type":"integer","title":"Validated Trades"},"since":{"type":"string","title":"Since"},"total_pnl":{"type":"number","title":"Total Pnl"},"win_rate":{"type":"number","title":"Win Rate"},"sprint":{"type":"integer","title":"Sprint"},"tests_passing":{"type":"integer","title":"Tests Passing"}},"type":"object","required":["validated_trades","since","total_pnl","win_rate","sprint","tests_passing"],"title":"GhostStatsResponse","example":{"since":"2026-04-12","sprint":229,"tests_passing":2153,"total_pnl":155.77,"validated_trades":3,"win_rate":67.0}},"GhostStatusResponse":{"properties":{"judiciary_ok":{"type":"boolean","title":"Judiciary Ok"},"council_ok":{"type":"boolean","title":"Council Ok"},"ema_ok":{"type":"boolean","title":"Ema Ok"},"regime_favorable":{"type":"boolean","title":"Regime Favorable"},"session_favorable":{"type":"boolean","title":"Session Favorable"},"momentum_ok":{"type":"boolean","title":"Momentum Ok"},"quality_ok":{"type":"boolean","title":"Quality Ok"},"conditions_met":{"type":"integer","title":"Conditions Met"},"conditions_required":{"type":"integer","title":"Conditions Required"},"ema_distance_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ema Distance Pct"},"current_rsi":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Current Rsi"},"regime":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Regime"},"council_ruling":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Council Ruling"},"council_confidence":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Council Confidence"},"entry_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Entry Mode"},"council_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Council Mode"},"has_open_position":{"type":"boolean","title":"Has Open Position"},"btc_price":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Btc Price"},"entry_price":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Entry Price"},"current_price":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Current Price"},"pnl_usd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Pnl Usd"},"pnl_pct":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Pnl Pct"},"stop_loss":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Stop Loss"},"tp1_executed":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Tp1 Executed"},"tp1_price":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Tp1 Price"},"tp1_pnl":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Tp1 Pnl"},"tp2_target":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Tp2 Target"},"generated_at":{"type":"string","format":"date-time","title":"Generated At"},"cached":{"type":"boolean","title":"Cached"},"cache_ttl_seconds":{"type":"integer","title":"Cache Ttl Seconds"}},"type":"object","required":["judiciary_ok","council_ok","ema_ok","regime_favorable","session_favorable","momentum_ok","quality_ok","conditions_met","conditions_required","ema_distance_pct","current_rsi","regime","council_ruling","council_confidence","entry_mode","council_mode","has_open_position","btc_price","generated_at","cached","cache_ttl_seconds"],"title":"GhostStatusResponse","example":{"btc_price":72340.5,"cache_ttl_seconds":60,"cached":false,"conditions_met":7,"conditions_required":7,"council_confidence":0.78,"council_mode":"council","council_ok":true,"council_ruling":"BUY","current_rsi":38.2,"ema_distance_pct":0.85,"ema_ok":true,"entry_mode":"B","generated_at":"2026-04-13T08:22:00Z","has_open_position":false,"judiciary_ok":true,"momentum_ok":true,"quality_ok":true,"regime":"WHALE_ACCUMULATION","regime_favorable":true,"session_favorable":true}},"GhostTP1Payload":{"properties":{"trade_id":{"type":"string","title":"Trade Id","description":"UUID of the trade that fired TP1"},"asset":{"type":"string","title":"Asset","description":"Asset symbol (BTC, ETH, SOL, TAO, GOLD)"},"entry_price":{"anyOf":[{"type":"number"},{"type":"string"},{"type":"null"}],"title":"Entry Price","description":"Original entry price in USD"},"tp1_price":{"anyOf":[{"type":"number"},{"type":"string"},{"type":"null"}],"title":"Tp1 Price","description":"Price at which TP1 partial sell executed"},"tp1_pnl":{"anyOf":[{"type":"number"},{"type":"string"},{"type":"null"}],"title":"Tp1 Pnl","description":"Locked P&L from the TP1 partial sell in USD"},"be_shield_active":{"type":"boolean","title":"Be Shield Active","description":"True if Break-Even Shield raised stop-loss to entry after TP1","default":false},"timestamp":{"type":"string","title":"Timestamp","description":"ISO 8601 timestamp when TP1 was detected"}},"type":"object","required":["trade_id","asset","timestamp"],"title":"GhostTP1Payload","description":"Payload schema for ghost.tp1 events -- TP1 partial sell fired."},"GhostTrackRecordEntryConditions":{"properties":{"councilVerdict":{"type":"string","title":"Councilverdict"},"rsi":{"type":"number","title":"Rsi"},"emaDistance":{"type":"number","title":"Emadistance"},"confidence":{"type":"number","title":"Confidence"}},"type":"object","required":["councilVerdict","rsi","emaDistance","confidence"],"title":"GhostTrackRecordEntryConditions"},"GhostTrackRecordEquityPoint":{"properties":{"date":{"type":"string","title":"Date"},"cumulativePnl":{"type":"number","title":"Cumulativepnl"},"tradeId":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Tradeid"},"result":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Result"}},"type":"object","required":["date","cumulativePnl"],"title":"GhostTrackRecordEquityPoint"},"GhostTrackRecordResponse":{"properties":{"validatedTrades":{"type":"integer","title":"Validatedtrades"},"tradingMode":{"type":"string","title":"Tradingmode"},"winRate":{"type":"number","title":"Winrate"},"totalPnlUsd":{"type":"number","title":"Totalpnlusd"},"avgHoldTimeMinutes":{"type":"number","title":"Avgholdtimeminutes"},"bestTradeUsd":{"type":"number","title":"Besttradeusd"},"worstTradeUsd":{"type":"number","title":"Worsttradeusd"},"avgPnlPerTrade":{"type":"number","title":"Avgpnlpertrade"},"since":{"type":"string","title":"Since"},"trades":{"items":{"$ref":"#/components/schemas/GhostTrackRecordTrade"},"type":"array","title":"Trades"},"equityCurve":{"items":{"$ref":"#/components/schemas/GhostTrackRecordEquityPoint"},"type":"array","title":"Equitycurve"}},"type":"object","required":["validatedTrades","tradingMode","winRate","totalPnlUsd","avgHoldTimeMinutes","bestTradeUsd","worstTradeUsd","avgPnlPerTrade","since","trades","equityCurve"],"title":"GhostTrackRecordResponse"},"GhostTrackRecordTrade":{"properties":{"id":{"type":"string","title":"Id"},"entryTime":{"type":"string","title":"Entrytime"},"exitTime":{"type":"string","title":"Exittime"},"entryPrice":{"type":"number","title":"Entryprice"},"exitPrice":{"type":"number","title":"Exitprice"},"holdTimeMinutes":{"type":"integer","title":"Holdtimeminutes"},"pnlUsd":{"type":"number","title":"Pnlusd"},"pnlPercent":{"type":"number","title":"Pnlpercent"},"result":{"type":"string","title":"Result"},"mode":{"type":"string","title":"Mode"},"tp1Hit":{"type":"boolean","title":"Tp1Hit"},"exitReason":{"type":"string","title":"Exitreason"},"entryConditions":{"anyOf":[{"$ref":"#/components/schemas/GhostTrackRecordEntryConditions"},{"type":"null"}]}},"type":"object","required":["id","entryTime","exitTime","entryPrice","exitPrice","holdTimeMinutes","pnlUsd","pnlPercent","result","mode","tp1Hit","exitReason"],"title":"GhostTrackRecordTrade"},"GoldCouncilResponse":{"properties":{"verdict":{"anyOf":[{"$ref":"#/components/schemas/GoldCouncilVerdict"},{"type":"null"}]},"nextRefreshMinutes":{"type":"integer","title":"Nextrefreshminutes","default":30}},"type":"object","title":"GoldCouncilResponse"},"GoldCouncilRunResponse":{"properties":{"success":{"type":"boolean","title":"Success"},"verdict":{"anyOf":[{"$ref":"#/components/schemas/GoldCouncilVerdict"},{"type":"null"}]},"detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Detail"}},"type":"object","required":["success"],"title":"GoldCouncilRunResponse"},"GoldCouncilVerdict":{"properties":{"id":{"type":"string","title":"Id"},"ruling":{"type":"string","title":"Ruling"},"confidence":{"type":"number","title":"Confidence"},"agentVotes":{"type":"object","title":"Agentvotes"},"createdAt":{"type":"string","format":"date-time","title":"Createdat"},"plainExplanation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Plainexplanation"}},"type":"object","required":["id","ruling","confidence","createdAt"],"title":"GoldCouncilVerdict"},"GoldGates":{"properties":{"macroEvent":{"type":"boolean","title":"Macroevent","default":false},"judiciary":{"type":"boolean","title":"Judiciary","default":false},"council":{"type":"boolean","title":"Council","default":false},"emaProximity":{"type":"boolean","title":"Emaproximity","default":false},"regime":{"type":"boolean","title":"Regime","default":false},"quality":{"type":"boolean","title":"Quality","default":false},"momentum":{"type":"boolean","title":"Momentum","default":false},"session":{"type":"boolean","title":"Session","default":false},"sessionLabel":{"type":"string","title":"Sessionlabel","default":"UNKNOWN"},"realRate":{"type":"boolean","title":"Realrate","default":false},"realRateDirection":{"type":"string","title":"Realratedirection","default":"UNKNOWN"},"gatesMet":{"type":"integer","title":"Gatesmet","default":0},"trigger":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Trigger"}},"type":"object","title":"GoldGates"},"GoldStatusCurrentTrade":{"properties":{"entryPrice":{"type":"number","title":"Entryprice"},"sizeOz":{"type":"number","title":"Sizeoz"},"pnlUsd":{"type":"number","title":"Pnlusd"},"pnlPct":{"type":"number","title":"Pnlpct"},"tp1Hit":{"type":"boolean","title":"Tp1Hit"},"stopLoss":{"type":"number","title":"Stoploss"},"tp1Target":{"type":"number","title":"Tp1Target"},"tp2Target":{"type":"number","title":"Tp2Target"},"hwm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Hwm"},"session":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session"},"realRateDirection":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Realratedirection"}},"type":"object","required":["entryPrice","sizeOz","pnlUsd","pnlPct","tp1Hit","stopLoss","tp1Target","tp2Target"],"title":"GoldStatusCurrentTrade"},"GoldStatusResponse":{"properties":{"status":{"type":"string","title":"Status"},"currentTrade":{"anyOf":[{"$ref":"#/components/schemas/GoldStatusCurrentTrade"},{"type":"null"}]},"latestVerdict":{"anyOf":[{"$ref":"#/components/schemas/GoldStatusVerdict"},{"type":"null"}]},"regime":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Regime"},"rsi1h":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Rsi1H"},"ema200":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ema200"},"goldPrice":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Goldprice"},"realRateDirection":{"type":"string","title":"Realratedirection","description":"10Y TIPS direction at request time (Gate 8 audit).","default":"UNKNOWN"},"sessionLabel":{"type":"string","title":"Sessionlabel","default":"UNKNOWN"},"paperTradesValidated":{"type":"integer","title":"Papertradesvalidated","description":"Closed validated Gold paper trades (0-10 milestone).","default":0},"paperMode":{"type":"boolean","title":"Papermode","description":"GOLD_PAPER_MODE flag; live unlocked after 10 validated paper closes + Sprint 187b broker wire.","default":true},"generatedAt":{"type":"string","format":"date-time","title":"Generatedat"},"gates":{"$ref":"#/components/schemas/GoldGates"}},"type":"object","required":["status","generatedAt"],"title":"GoldStatusResponse","example":{"ema200":3024.5,"gates":{"council":true,"emaProximity":true,"gatesMet":9,"judiciary":true,"macroEvent":true,"momentum":true,"quality":true,"realRate":true,"realRateDirection":"FALLING","regime":true,"session":true,"sessionLabel":"OVERLAP"},"generatedAt":"2026-05-06T14:30:00+00:00","goldPrice":3041.2,"latestVerdict":{"agentVotes":{},"confidence":0.71,"createdAt":"2026-05-06T14:00:00+00:00","ruling":"ACCUMULATE"},"paperMode":true,"paperTradesValidated":0,"realRateDirection":"FALLING","regime":"SAFE_HAVEN_DEMAND","rsi1h":56.2,"sessionLabel":"OVERLAP","status":"WAITING"}},"GoldStatusVerdict":{"properties":{"ruling":{"type":"string","title":"Ruling"},"confidence":{"type":"number","title":"Confidence"},"agentVotes":{"type":"object","title":"Agentvotes"},"createdAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Createdat"}},"type":"object","required":["ruling","confidence"],"title":"GoldStatusVerdict"},"GoldTrackRecordResponse":{"properties":{"trades":{"items":{"$ref":"#/components/schemas/GoldTrackRecordTrade"},"type":"array","title":"Trades"},"stats":{"$ref":"#/components/schemas/GoldTrackRecordStats"}},"type":"object","required":["trades","stats"],"title":"GoldTrackRecordResponse","example":{"stats":{"avgHoldMinutes":0.0,"bestTrade":0.0,"paperValidationTarget":10,"totalPnl":0.0,"totalTrades":0,"validatedPaperTrades":0,"winRate":0.0,"worstTrade":0.0},"trades":[]}},"GoldTrackRecordStats":{"properties":{"totalTrades":{"type":"integer","title":"Totaltrades"},"validatedPaperTrades":{"type":"integer","title":"Validatedpapertrades"},"paperValidationTarget":{"type":"integer","title":"Papervalidationtarget","default":10},"winRate":{"type":"number","title":"Winrate"},"totalPnl":{"type":"number","title":"Totalpnl"},"avgHoldMinutes":{"type":"number","title":"Avgholdminutes"},"bestTrade":{"type":"number","title":"Besttrade"},"worstTrade":{"type":"number","title":"Worsttrade"}},"type":"object","required":["totalTrades","validatedPaperTrades","winRate","totalPnl","avgHoldMinutes","bestTrade","worstTrade"],"title":"GoldTrackRecordStats"},"GoldTrackRecordTrade":{"properties":{"id":{"type":"string","title":"Id"},"entryTime":{"type":"string","title":"Entrytime"},"exitTime":{"type":"string","title":"Exittime"},"entryPrice":{"type":"number","title":"Entryprice"},"exitPrice":{"type":"number","title":"Exitprice"},"sizeOz":{"type":"number","title":"Sizeoz"},"pnlUsd":{"type":"number","title":"Pnlusd"},"pnlPct":{"type":"number","title":"Pnlpct"},"tp1PnlUsd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Tp1Pnlusd"},"session":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Session"},"realRateDirection":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Realratedirection"},"isPaper":{"type":"boolean","title":"Ispaper","default":true},"result":{"type":"string","title":"Result"},"mode":{"type":"string","title":"Mode"}},"type":"object","required":["id","entryTime","exitTime","entryPrice","exitPrice","sizeOz","pnlUsd","pnlPct","result","mode"],"title":"GoldTrackRecordTrade"},"HTTPValidationError":{"properties":{"detail":{"items":{"$ref":"#/components/schemas/ValidationError"},"type":"array","title":"Detail"}},"type":"object","title":"HTTPValidationError"},"HealthResponse":{"properties":{"status":{"type":"string","title":"Status"},"version":{"type":"string","title":"Version"},"environment":{"type":"string","title":"Environment"},"timestamp":{"type":"string","format":"date-time","title":"Timestamp"}},"type":"object","required":["status","version","environment","timestamp"],"title":"HealthResponse","example":{"environment":"production","status":"ok","timestamp":"2026-04-03T10:22:00Z","version":"1.0.0"}},"KeyGenerateRequest":{"properties":{"name":{"type":"string","maxLength":100,"minLength":2,"title":"Name","description":"Your name or project name"},"email":{"type":"string","title":"Email","description":"Your email address"}},"type":"object","required":["name","email"],"title":"KeyGenerateRequest","example":{"email":"dev@example.com","name":"My Trading Bot"}},"KeyGenerateResponse":{"properties":{"api_key":{"type":"string","title":"Api Key"},"tier":{"type":"string","title":"Tier"},"calls_per_day":{"type":"integer","title":"Calls Per Day"},"calls_per_minute":{"type":"integer","title":"Calls Per Minute"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"message":{"type":"string","title":"Message"}},"type":"object","required":["api_key","tier","calls_per_day","calls_per_minute","created_at","message"],"title":"KeyGenerateResponse","example":{"api_key":"aik_free_a1b2c3d4e5f6g7h8i9j0","calls_per_day":100,"calls_per_minute":2,"created_at":"2026-04-03T10:22:00Z","message":"Store this key safely — it cannot be recovered!","tier":"free"}},"MacroCalendarStatus":{"properties":{"tier":{"type":"string","title":"Tier","default":"NONE"},"event_name":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Event Name"},"hours_until":{"type":"number","title":"Hours Until","default":0.0},"is_active":{"type":"boolean","title":"Is Active","default":false},"status":{"type":"string","title":"Status","default":"CLEAR"}},"type":"object","title":"MacroCalendarStatus","description":"Sprint 343 — current macro economic calendar status.\n\nSurfaced on ``GET /v1/signals/latest`` so SSR consumers (the aioka.io live\npage) can render a FOMC/NFP/CPI awareness indicator without parsing the\nraw ``MACRO_CAL_*`` signals. Backed by the Sprint 341 MacroCalendarProvider."},"MacroContextItem":{"properties":{"assessment":{"type":"string","title":"Assessment"},"key_driver":{"type":"string","title":"Key Driver"},"primary_risk":{"type":"string","title":"Primary Risk"}},"type":"object","required":["assessment","key_driver","primary_risk"],"title":"MacroContextItem","description":"Lightweight macro environment context embedded in verdict response — Sprint 201."},"MacroCorrelationResponse":{"properties":{"timestamp":{"type":"string","format":"date-time","title":"Timestamp"},"btc_macro_score":{"type":"number","title":"Btc Macro Score"},"overall_assessment":{"type":"string","title":"Overall Assessment"},"signals":{"items":{"$ref":"#/components/schemas/MacroSignalItem"},"type":"array","title":"Signals"},"summary":{"type":"string","title":"Summary"},"cached":{"type":"boolean","title":"Cached"},"cache_ttl_seconds":{"type":"integer","title":"Cache Ttl Seconds"}},"type":"object","required":["timestamp","btc_macro_score","overall_assessment","signals","summary","cached","cache_ttl_seconds"],"title":"MacroCorrelationResponse","example":{"btc_macro_score":0.7,"cache_ttl_seconds":300,"cached":false,"overall_assessment":"BULLISH","signals":[{"asset":"DXY","btc_impact":"BULLISH","current_value":99.2,"explanation":"Dollar weakening supports BTC as alternative store of value","trend":"FALLING"},{"asset":"US10Y","btc_impact":"NEUTRAL","current_value":4.25,"explanation":"Treasury yields stable — no significant BTC pressure","trend":"STABLE"}],"summary":"Macro environment is broadly supportive of BTC (DXY, BTC_DOMINANCE aligned bullishly).","timestamp":"2026-04-18T10:00:00Z"}},"MacroSignalItem":{"properties":{"asset":{"type":"string","title":"Asset"},"current_value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Current Value"},"trend":{"type":"string","title":"Trend"},"btc_impact":{"type":"string","title":"Btc Impact"},"explanation":{"type":"string","title":"Explanation"}},"type":"object","required":["asset","current_value","trend","btc_impact","explanation"],"title":"MacroSignalItem"},"MonteCarloResponse":{"properties":{"asset":{"type":"string","title":"Asset"},"scenarios":{"type":"integer","title":"Scenarios"},"win_rate":{"type":"number","title":"Win Rate"},"avg_pnl_usd":{"type":"number","title":"Avg Pnl Usd"},"worst_case_usd":{"type":"number","title":"Worst Case Usd"},"best_case_usd":{"type":"number","title":"Best Case Usd"},"sharpe_ratio":{"type":"number","title":"Sharpe Ratio"},"max_drawdown_pct":{"type":"number","title":"Max Drawdown Pct"},"tp1_hit_rate":{"type":"number","title":"Tp1 Hit Rate"},"tp2_hit_rate":{"type":"number","title":"Tp2 Hit Rate"},"sl_hit_rate":{"type":"number","title":"Sl Hit Rate"},"confidence_level":{"type":"string","title":"Confidence Level"},"summary":{"type":"string","title":"Summary"},"cached_at":{"type":"string","title":"Cached At"},"cached":{"type":"boolean","title":"Cached","default":false},"cache_ttl_seconds":{"type":"integer","title":"Cache Ttl Seconds","default":3600}},"type":"object","required":["asset","scenarios","win_rate","avg_pnl_usd","worst_case_usd","best_case_usd","sharpe_ratio","max_drawdown_pct","tp1_hit_rate","tp2_hit_rate","sl_hit_rate","confidence_level","summary","cached_at"],"title":"MonteCarloResponse"},"NewsletterSubscribeRequest":{"properties":{"email":{"type":"string","maxLength":254,"title":"Email"},"name":{"anyOf":[{"type":"string","maxLength":100},{"type":"null"}],"title":"Name"},"website":{"type":"string","maxLength":500,"title":"Website","default":""}},"type":"object","required":["email"],"title":"NewsletterSubscribeRequest"},"NewsletterSubscribeResponse":{"properties":{"message":{"type":"string","title":"Message"}},"type":"object","required":["message"],"title":"NewsletterSubscribeResponse"},"NewsletterUnsubscribeRequest":{"properties":{"email":{"type":"string","maxLength":254,"title":"Email"},"token":{"type":"string","maxLength":64,"title":"Token","default":""},"website":{"type":"string","maxLength":500,"title":"Website","default":""}},"type":"object","required":["email"],"title":"NewsletterUnsubscribeRequest"},"NewsletterUnsubscribeResponse":{"properties":{"message":{"type":"string","title":"Message"}},"type":"object","required":["message"],"title":"NewsletterUnsubscribeResponse"},"RegimeCurrentResponse":{"properties":{"regime":{"type":"string","title":"Regime"},"confidence":{"type":"number","title":"Confidence"},"btc_price":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Btc Price"},"detected_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Detected At"},"cached":{"type":"boolean","title":"Cached"},"cache_ttl_seconds":{"type":"integer","title":"Cache Ttl Seconds"},"strength":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Strength"},"sub_regime":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Sub Regime"},"volatility_state":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Volatility State"},"chop_score":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Chop Score"},"breakout_imminent":{"anyOf":[{"type":"boolean"},{"type":"null"}],"title":"Breakout Imminent"},"compatible_strategies":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Compatible Strategies"},"incompatible_strategies":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Incompatible Strategies"},"transition_probabilities":{"anyOf":[{"additionalProperties":{"type":"number"},"type":"object"},{"type":"null"}],"title":"Transition Probabilities"},"regime_age_hours":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Regime Age Hours"},"regime_v2":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Regime V2"},"regime_v2_compatible_strategies":{"anyOf":[{"items":{"type":"string"},"type":"array"},{"type":"null"}],"title":"Regime V2 Compatible Strategies"}},"type":"object","required":["regime","confidence","btc_price","detected_at","cached","cache_ttl_seconds"],"title":"RegimeCurrentResponse","example":{"breakout_imminent":false,"btc_price":67124.0,"cache_ttl_seconds":290,"cached":true,"chop_score":0.22,"compatible_strategies":["momentum","trend_following","breakout","dip_buying"],"confidence":0.84,"detected_at":"2026-04-03T10:00:00Z","incompatible_strategies":["mean_reversion","range_trading"],"regime":"BULL_TRENDING","regime_age_hours":4.5,"strength":"STRONG","sub_regime":"BULL_TRENDING_EARLY","transition_probabilities":{"BULL_TRENDING":0.72,"HIGH_VOLATILITY":0.18,"OTHER":0.1},"volatility_state":"NORMAL"}},"RegimeHistoryItem":{"properties":{"regime":{"type":"string","title":"Regime"},"confidence":{"type":"number","title":"Confidence"},"recorded_at":{"type":"string","format":"date-time","title":"Recorded At"}},"type":"object","required":["regime","confidence","recorded_at"],"title":"RegimeHistoryItem"},"RegimeHistoryResponse":{"properties":{"regimes":{"items":{"$ref":"#/components/schemas/RegimeHistoryItem"},"type":"array","title":"Regimes"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"per_page":{"type":"integer","title":"Per Page"},"cached":{"type":"boolean","title":"Cached"},"cache_ttl_seconds":{"type":"integer","title":"Cache Ttl Seconds"}},"type":"object","required":["regimes","total","page","per_page","cached","cache_ttl_seconds"],"title":"RegimeHistoryResponse"},"RegimeStatsItem":{"properties":{"regime":{"type":"string","title":"Regime"},"trades":{"type":"integer","title":"Trades"},"wins":{"type":"integer","title":"Wins"},"losses":{"type":"integer","title":"Losses"},"win_rate":{"type":"number","title":"Win Rate"},"avg_pnl_pct":{"type":"number","title":"Avg Pnl Pct"},"avg_hold_hours":{"type":"number","title":"Avg Hold Hours"},"total_pnl_usd":{"type":"number","title":"Total Pnl Usd"}},"type":"object","required":["regime","trades","wins","losses","win_rate","avg_pnl_pct","avg_hold_hours","total_pnl_usd"],"title":"RegimeStatsItem"},"RegimeStatsResponse":{"properties":{"regimes":{"items":{"$ref":"#/components/schemas/RegimeStatsItem"},"type":"array","title":"Regimes"},"best_regime":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Best Regime"},"worst_regime":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Worst Regime"},"total_trades":{"type":"integer","title":"Total Trades"},"overall_win_rate":{"type":"number","title":"Overall Win Rate"},"since":{"type":"string","title":"Since"},"generated_at":{"type":"string","title":"Generated At"},"cached":{"type":"boolean","title":"Cached"},"cache_ttl_seconds":{"type":"integer","title":"Cache Ttl Seconds"}},"type":"object","required":["regimes","best_regime","worst_regime","total_trades","overall_win_rate","since","generated_at","cached","cache_ttl_seconds"],"title":"RegimeStatsResponse","example":{"best_regime":"BULL_TRENDING","cache_ttl_seconds":290,"cached":true,"generated_at":"12 Apr 2026, 10:00 CEST","overall_win_rate":62.5,"regimes":[{"avg_hold_hours":18.3,"avg_pnl_pct":2.14,"losses":1,"regime":"BULL_TRENDING","total_pnl_usd":1240.5,"trades":5,"win_rate":80.0,"wins":4}],"since":"2026-04-12","total_trades":8,"worst_regime":"HIGH_VOLATILITY"}},"SOLCouncilResponse":{"properties":{"verdict":{"anyOf":[{"$ref":"#/components/schemas/SOLCouncilVerdict"},{"type":"null"}]},"nextRefreshMinutes":{"type":"integer","title":"Nextrefreshminutes","default":30}},"type":"object","title":"SOLCouncilResponse"},"SOLCouncilRunResponse":{"properties":{"success":{"type":"boolean","title":"Success"},"verdict":{"anyOf":[{"$ref":"#/components/schemas/SOLCouncilVerdict"},{"type":"null"}]},"detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Detail"}},"type":"object","required":["success"],"title":"SOLCouncilRunResponse"},"SOLCouncilVerdict":{"properties":{"id":{"type":"string","title":"Id"},"ruling":{"type":"string","title":"Ruling"},"confidence":{"type":"number","title":"Confidence"},"agentVotes":{"type":"object","title":"Agentvotes"},"riskFlags":{"items":{"type":"string"},"type":"array","title":"Riskflags"},"chiefRationale":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chiefrationale"},"snapshotSignals":{"type":"object","title":"Snapshotsignals"},"plainExplanation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Plainexplanation"},"createdAt":{"type":"string","format":"date-time","title":"Createdat"}},"type":"object","required":["id","ruling","confidence","createdAt"],"title":"SOLCouncilVerdict"},"SOLStatusCurrentTrade":{"properties":{"entryPrice":{"type":"number","title":"Entryprice"},"sizeSol":{"type":"number","title":"Sizesol"},"pnlUsd":{"type":"number","title":"Pnlusd"},"pnlPct":{"type":"number","title":"Pnlpct"},"tp1Hit":{"type":"boolean","title":"Tp1Hit"},"stopLoss":{"type":"number","title":"Stoploss"},"tp1Target":{"type":"number","title":"Tp1Target"},"tp2Target":{"type":"number","title":"Tp2Target"},"networkHealthAtEntry":{"type":"string","title":"Networkhealthatentry","default":"HEALTHY"},"hwm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Hwm"}},"type":"object","required":["entryPrice","sizeSol","pnlUsd","pnlPct","tp1Hit","stopLoss","tp1Target","tp2Target"],"title":"SOLStatusCurrentTrade"},"SOLStatusResponse":{"properties":{"status":{"type":"string","title":"Status"},"currentTrade":{"anyOf":[{"$ref":"#/components/schemas/SOLStatusCurrentTrade"},{"type":"null"}]},"latestVerdict":{"anyOf":[{"$ref":"#/components/schemas/SOLStatusVerdict"},{"type":"null"}]},"regime":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Regime"},"rsi1h":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Rsi1H"},"ema200":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ema200"},"solPrice":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Solprice"},"networkHealth":{"type":"string","title":"Networkhealth","default":"UNKNOWN"},"networkTps":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Networktps"},"generatedAt":{"type":"string","format":"date-time","title":"Generatedat"},"gates":{"$ref":"#/components/schemas/SolGates"}},"type":"object","required":["status","generatedAt"],"title":"SOLStatusResponse","example":{"ema200":152.3,"gates":{"council":true,"emaProximity":true,"gatesMet":8,"judiciary":true,"momentum":true,"network":true,"networkHealth":"HEALTHY","quality":true,"regime":true,"session":true},"generatedAt":"2026-05-05T10:30:00+00:00","latestVerdict":{"confidence":0.71,"createdAt":"2026-05-05T10:15:00+00:00","ruling":"ACCUMULATE"},"networkHealth":"HEALTHY","networkTps":2850.5,"regime":"ACCUMULATION","rsi1h":54.2,"solPrice":156.8,"status":"WAITING"}},"SOLStatusVerdict":{"properties":{"ruling":{"type":"string","title":"Ruling"},"confidence":{"type":"number","title":"Confidence"},"createdAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Createdat"}},"type":"object","required":["ruling","confidence"],"title":"SOLStatusVerdict"},"SOLTrackRecordResponse":{"properties":{"trades":{"items":{"$ref":"#/components/schemas/SOLTrackRecordTrade"},"type":"array","title":"Trades"},"stats":{"$ref":"#/components/schemas/SOLTrackRecordStats"}},"type":"object","required":["trades","stats"],"title":"SOLTrackRecordResponse","example":{"stats":{"avgHoldMinutes":0.0,"bestTrade":0.0,"totalPnl":0.0,"totalTrades":0,"winRate":0.0,"worstTrade":0.0},"trades":[]}},"SOLTrackRecordStats":{"properties":{"totalTrades":{"type":"integer","title":"Totaltrades"},"winRate":{"type":"number","title":"Winrate"},"totalPnl":{"type":"number","title":"Totalpnl"},"avgHoldMinutes":{"type":"number","title":"Avgholdminutes"},"bestTrade":{"type":"number","title":"Besttrade"},"worstTrade":{"type":"number","title":"Worsttrade"}},"type":"object","required":["totalTrades","winRate","totalPnl","avgHoldMinutes","bestTrade","worstTrade"],"title":"SOLTrackRecordStats"},"SOLTrackRecordTrade":{"properties":{"id":{"type":"string","title":"Id"},"entryTime":{"type":"string","title":"Entrytime"},"exitTime":{"type":"string","title":"Exittime"},"entryPrice":{"type":"number","title":"Entryprice"},"exitPrice":{"type":"number","title":"Exitprice"},"sizeSol":{"type":"number","title":"Sizesol"},"pnlUsd":{"type":"number","title":"Pnlusd"},"pnlPct":{"type":"number","title":"Pnlpct"},"tp1PnlUsd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Tp1Pnlusd"},"networkHealthAtEntry":{"type":"string","title":"Networkhealthatentry","default":"HEALTHY"},"result":{"type":"string","title":"Result"},"mode":{"type":"string","title":"Mode"}},"type":"object","required":["id","entryTime","exitTime","entryPrice","exitPrice","sizeSol","pnlUsd","pnlPct","result","mode"],"title":"SOLTrackRecordTrade"},"SignalItem":{"properties":{"key":{"type":"string","title":"Key"},"display_name":{"type":"string","title":"Display Name"},"value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Value"},"status":{"type":"string","title":"Status"},"last_updated":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Updated"}},"type":"object","required":["key","display_name","value","status","last_updated"],"title":"SignalItem"},"SignalWeightItem":{"properties":{"signal_key":{"type":"string","title":"Signal Key"},"regime":{"type":"string","title":"Regime"},"multiplier":{"type":"number","title":"Multiplier"},"accuracy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Accuracy"},"data_points":{"type":"integer","title":"Data Points","default":0},"last_updated":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Updated"}},"type":"object","required":["signal_key","regime","multiplier"],"title":"SignalWeightItem","description":"Single (signal_key, regime) multiplier row from the adaptive engine."},"SignalsHistoryItem":{"properties":{"recorded_at":{"type":"string","format":"date-time","title":"Recorded At"},"signal_key":{"type":"string","title":"Signal Key"},"display_name":{"type":"string","title":"Display Name"},"value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Value"}},"type":"object","required":["recorded_at","signal_key","display_name","value"],"title":"SignalsHistoryItem"},"SignalsHistoryResponse":{"properties":{"items":{"items":{"$ref":"#/components/schemas/SignalsHistoryItem"},"type":"array","title":"Items"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"per_page":{"type":"integer","title":"Per Page"},"cached":{"type":"boolean","title":"Cached"},"cache_ttl_seconds":{"type":"integer","title":"Cache Ttl Seconds"}},"type":"object","required":["items","total","page","per_page","cached","cache_ttl_seconds"],"title":"SignalsHistoryResponse"},"SignalsLatestResponse":{"properties":{"signals":{"items":{"$ref":"#/components/schemas/SignalItem"},"type":"array","title":"Signals"},"total_signals":{"type":"integer","title":"Total Signals"},"live_count":{"type":"integer","title":"Live Count"},"stale_count":{"type":"integer","title":"Stale Count"},"dead_count":{"type":"integer","title":"Dead Count"},"coverage_pct":{"type":"number","title":"Coverage Pct"},"macro_calendar":{"$ref":"#/components/schemas/MacroCalendarStatus"},"timestamp":{"type":"string","format":"date-time","title":"Timestamp"},"cached":{"type":"boolean","title":"Cached"},"cache_ttl_seconds":{"type":"integer","title":"Cache Ttl Seconds"}},"type":"object","required":["signals","total_signals","live_count","stale_count","dead_count","coverage_pct","timestamp","cached","cache_ttl_seconds"],"title":"SignalsLatestResponse"},"SignalsWeightsResponse":{"properties":{"regime":{"type":"string","title":"Regime"},"weights":{"items":{"$ref":"#/components/schemas/SignalWeightItem"},"type":"array","title":"Weights"},"avg_accuracy":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Avg Accuracy"},"window_size":{"type":"integer","title":"Window Size"},"last_updated":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Updated"},"cached":{"type":"boolean","title":"Cached"},"cache_ttl_seconds":{"type":"integer","title":"Cache Ttl Seconds"}},"type":"object","required":["regime","weights","window_size","cached","cache_ttl_seconds"],"title":"SignalsWeightsResponse","description":"Response for GET /v1/signals/weights (Pro tier).\n\nExposes the adaptive multiplier AIOKA applies per signal and regime so\nPro-tier clients can audit exactly how each signal is weighted in the\ncurrent market regime."},"SolGates":{"properties":{"network":{"type":"boolean","title":"Network","default":false},"networkHealth":{"type":"string","title":"Networkhealth","default":"UNKNOWN"},"judiciary":{"type":"boolean","title":"Judiciary","default":false},"council":{"type":"boolean","title":"Council","default":false},"emaProximity":{"type":"boolean","title":"Emaproximity","default":false},"regime":{"type":"boolean","title":"Regime","default":false},"quality":{"type":"boolean","title":"Quality","default":false},"momentum":{"type":"boolean","title":"Momentum","default":false},"session":{"type":"boolean","title":"Session","default":false},"gatesMet":{"type":"integer","title":"Gatesmet","default":0},"trigger":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Trigger"}},"type":"object","title":"SolGates"},"TAOCouncilResponse":{"properties":{"verdict":{"anyOf":[{"$ref":"#/components/schemas/TAOCouncilVerdict"},{"type":"null"}]},"nextRefreshMinutes":{"type":"integer","title":"Nextrefreshminutes","default":30}},"type":"object","title":"TAOCouncilResponse"},"TAOCouncilRunResponse":{"properties":{"success":{"type":"boolean","title":"Success"},"verdict":{"anyOf":[{"$ref":"#/components/schemas/TAOCouncilVerdict"},{"type":"null"}]},"detail":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Detail"}},"type":"object","required":["success"],"title":"TAOCouncilRunResponse"},"TAOCouncilVerdict":{"properties":{"id":{"type":"string","title":"Id"},"ruling":{"type":"string","title":"Ruling"},"confidence":{"type":"number","title":"Confidence"},"agentVotes":{"type":"object","title":"Agentvotes"},"riskFlags":{"items":{"type":"string"},"type":"array","title":"Riskflags"},"chiefRationale":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Chiefrationale"},"snapshotSignals":{"type":"object","title":"Snapshotsignals"},"createdAt":{"type":"string","format":"date-time","title":"Createdat"},"plainExplanation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Plainexplanation"}},"type":"object","required":["id","ruling","confidence","createdAt"],"title":"TAOCouncilVerdict"},"TAOSignalEntry":{"properties":{"key":{"type":"string","title":"Key"},"value":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Value"},"direction":{"type":"string","title":"Direction"},"source":{"type":"string","title":"Source"},"detail":{"type":"string","title":"Detail","default":""},"fetchedAt":{"type":"string","format":"date-time","title":"Fetchedat"}},"type":"object","required":["key","direction","source","fetchedAt"],"title":"TAOSignalEntry"},"TAOSignalsResponse":{"properties":{"signals":{"items":{"$ref":"#/components/schemas/TAOSignalEntry"},"type":"array","title":"Signals"},"liquidityStatus":{"type":"string","title":"Liquiditystatus","default":"UNKNOWN"},"liquidityDepthUsd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Liquiditydepthusd"},"generatedAt":{"type":"string","format":"date-time","title":"Generatedat"}},"type":"object","required":["signals","generatedAt"],"title":"TAOSignalsResponse"},"TAOStatusCurrentTrade":{"properties":{"entryPrice":{"type":"number","title":"Entryprice"},"sizeTao":{"type":"number","title":"Sizetao"},"pnlUsd":{"type":"number","title":"Pnlusd"},"pnlPct":{"type":"number","title":"Pnlpct"},"tp1Hit":{"type":"boolean","title":"Tp1Hit"},"stopLoss":{"type":"number","title":"Stoploss"},"tp1Target":{"type":"number","title":"Tp1Target"},"tp2Target":{"type":"number","title":"Tp2Target"},"hwm":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Hwm"},"liquidityAtEntry":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Liquidityatentry"},"taoBtcRatioAtEntry":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Taobtcratioatentry"},"daysSinceHalving":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Dayssincehalving"}},"type":"object","required":["entryPrice","sizeTao","pnlUsd","pnlPct","tp1Hit","stopLoss","tp1Target","tp2Target"],"title":"TAOStatusCurrentTrade"},"TAOStatusResponse":{"properties":{"status":{"type":"string","title":"Status"},"currentTrade":{"anyOf":[{"$ref":"#/components/schemas/TAOStatusCurrentTrade"},{"type":"null"}]},"latestVerdict":{"anyOf":[{"$ref":"#/components/schemas/TAOStatusVerdict"},{"type":"null"}]},"regime":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Regime"},"rsi1h":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Rsi1H"},"ema200":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Ema200"},"taoPrice":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Taoprice"},"networkHealth":{"type":"string","title":"Networkhealth","description":"TAO has no network outage gate; always 'HEALTHY' for compatibility with the multi-asset dashboard.","default":"HEALTHY"},"liquidityStatus":{"type":"string","title":"Liquiditystatus","default":"UNKNOWN"},"liquidityDepthUsd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Liquiditydepthusd"},"paperTradesValidated":{"type":"integer","title":"Papertradesvalidated","description":"Closed validated TAO paper trades (0-10 milestone).","default":0},"paperMode":{"type":"boolean","title":"Papermode","description":"TAO_PAPER_MODE flag; live unlocked after 10 validated paper closes.","default":true},"generatedAt":{"type":"string","format":"date-time","title":"Generatedat"},"gates":{"$ref":"#/components/schemas/TaoGates"}},"type":"object","required":["status","generatedAt"],"title":"TAOStatusResponse","example":{"ema200":261.3,"gates":{"council":true,"emaProximity":true,"gatesMet":8,"judiciary":true,"liquidity":true,"liquidityStatus":"SUFFICIENT","momentum":true,"quality":true,"regime":true,"session":true},"generatedAt":"2026-05-05T10:30:00+00:00","latestVerdict":{"agentVotes":{},"confidence":0.74,"createdAt":"2026-05-05T10:15:00+00:00","riskFlags":[],"ruling":"ACCUMULATE"},"liquidityDepthUsd":75200.0,"liquidityStatus":"SUFFICIENT","networkHealth":"HEALTHY","paperMode":true,"paperTradesValidated":0,"regime":"ACCUMULATION","rsi1h":55.4,"status":"WAITING","taoPrice":268.4}},"TAOStatusVerdict":{"properties":{"ruling":{"type":"string","title":"Ruling"},"confidence":{"type":"number","title":"Confidence"},"riskFlags":{"items":{"type":"string"},"type":"array","title":"Riskflags"},"agentVotes":{"type":"object","title":"Agentvotes"},"createdAt":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Createdat"}},"type":"object","required":["ruling","confidence"],"title":"TAOStatusVerdict"},"TAOTrackRecordResponse":{"properties":{"trades":{"items":{"$ref":"#/components/schemas/TAOTrackRecordTrade"},"type":"array","title":"Trades"},"stats":{"$ref":"#/components/schemas/TAOTrackRecordStats"}},"type":"object","required":["trades","stats"],"title":"TAOTrackRecordResponse","example":{"stats":{"avgHoldMinutes":0.0,"bestTrade":0.0,"paperValidationTarget":10,"totalPnl":0.0,"totalTrades":0,"validatedPaperTrades":0,"winRate":0.0,"worstTrade":0.0},"trades":[]}},"TAOTrackRecordStats":{"properties":{"totalTrades":{"type":"integer","title":"Totaltrades"},"validatedPaperTrades":{"type":"integer","title":"Validatedpapertrades"},"paperValidationTarget":{"type":"integer","title":"Papervalidationtarget","default":10},"winRate":{"type":"number","title":"Winrate"},"totalPnl":{"type":"number","title":"Totalpnl"},"avgHoldMinutes":{"type":"number","title":"Avgholdminutes"},"bestTrade":{"type":"number","title":"Besttrade"},"worstTrade":{"type":"number","title":"Worsttrade"}},"type":"object","required":["totalTrades","validatedPaperTrades","winRate","totalPnl","avgHoldMinutes","bestTrade","worstTrade"],"title":"TAOTrackRecordStats"},"TAOTrackRecordTrade":{"properties":{"id":{"type":"string","title":"Id"},"entryTime":{"type":"string","title":"Entrytime"},"exitTime":{"type":"string","title":"Exittime"},"entryPrice":{"type":"number","title":"Entryprice"},"exitPrice":{"type":"number","title":"Exitprice"},"sizeTao":{"type":"number","title":"Sizetao"},"pnlUsd":{"type":"number","title":"Pnlusd"},"pnlPct":{"type":"number","title":"Pnlpct"},"tp1PnlUsd":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Tp1Pnlusd"},"liquidityAtEntry":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Liquidityatentry"},"daysSinceHalving":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Dayssincehalving"},"isPaper":{"type":"boolean","title":"Ispaper","default":true},"result":{"type":"string","title":"Result"},"mode":{"type":"string","title":"Mode"}},"type":"object","required":["id","entryTime","exitTime","entryPrice","exitPrice","sizeTao","pnlUsd","pnlPct","result","mode"],"title":"TAOTrackRecordTrade"},"TaoGates":{"properties":{"liquidity":{"type":"boolean","title":"Liquidity","default":false},"liquidityStatus":{"type":"string","title":"Liquiditystatus","default":"UNKNOWN"},"judiciary":{"type":"boolean","title":"Judiciary","default":false},"council":{"type":"boolean","title":"Council","default":false},"emaProximity":{"type":"boolean","title":"Emaproximity","default":false},"regime":{"type":"boolean","title":"Regime","default":false},"quality":{"type":"boolean","title":"Quality","default":false},"momentum":{"type":"boolean","title":"Momentum","default":false},"session":{"type":"boolean","title":"Session","default":false},"gatesMet":{"type":"integer","title":"Gatesmet","default":0},"trigger":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Trigger"}},"type":"object","title":"TaoGates"},"TradingViewSignalResponse":{"properties":{"verdict":{"type":"string","title":"Verdict","description":"Judiciary ruling (STRONG_BUY / BUY / ACCUMULATE / HOLD / REDUCE / SELL / STRONG_SELL / PENDING)."},"confidence":{"type":"number","title":"Confidence","description":"Judiciary composite confidence 0-100."},"regime":{"type":"string","title":"Regime","description":"Current market regime (BULL_TRENDING / HIGH_VOLATILITY / LOW_VOLATILITY / ...)."},"dark_pool":{"type":"integer","title":"Dark Pool","description":"Dark Pool composite score 0-100 (Sprint 210 — 0 if unavailable)."},"rsi":{"type":"number","title":"Rsi","description":"BTC 1H RSI(14). 0 if unavailable."},"ema_200":{"type":"number","title":"Ema 200","description":"BTC 1H EMA(200). 0 if unavailable."},"btc_price":{"type":"number","title":"Btc Price","description":"Live BTC spot price. 0 if unavailable."},"ghost_status":{"type":"string","title":"Ghost Status","description":"Ghost Trader status (WAITING / IN_POSITION / READY)."},"timestamp":{"type":"integer","title":"Timestamp","description":"Unix epoch seconds of the response."}},"type":"object","required":["verdict","confidence","regime","dark_pool","rsi","ema_200","btc_price","ghost_status","timestamp"],"title":"TradingViewSignalResponse","description":"Flat, compact signal payload consumed by AIOKA Pine Script v5 indicator.\n\nAll times are Unix epoch seconds (integer) rather than ISO strings to\nminimise bytes on the wire and match Pine Script's native time format.","example":{"btc_price":77781.0,"confidence":76.8,"dark_pool":65,"ema_200":75963.0,"ghost_status":"WAITING","regime":"LOW_VOLATILITY","rsi":48.0,"timestamp":1745441234,"verdict":"ACCUMULATE"}},"ValidationError":{"properties":{"loc":{"items":{"anyOf":[{"type":"string"},{"type":"integer"}]},"type":"array","title":"Location"},"msg":{"type":"string","title":"Message"},"type":{"type":"string","title":"Error Type"}},"type":"object","required":["loc","msg","type"],"title":"ValidationError"},"VerdictHistoryResponse":{"properties":{"verdicts":{"items":{"$ref":"#/components/schemas/VerdictItem"},"type":"array","title":"Verdicts"},"total":{"type":"integer","title":"Total"},"page":{"type":"integer","title":"Page"},"per_page":{"type":"integer","title":"Per Page"},"from_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"From Time"},"to_time":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"To Time"},"cached":{"type":"boolean","title":"Cached"},"cache_ttl_seconds":{"type":"integer","title":"Cache Ttl Seconds"}},"type":"object","required":["verdicts","total","page","per_page","from_time","to_time","cached","cache_ttl_seconds"],"title":"VerdictHistoryResponse"},"VerdictItem":{"properties":{"ruling":{"type":"string","title":"Ruling"},"confidence":{"type":"number","title":"Confidence"},"score":{"type":"number","title":"Score"},"btc_price":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Btc Price"},"timestamp":{"type":"string","format":"date-time","title":"Timestamp"}},"type":"object","required":["ruling","confidence","score","btc_price","timestamp"],"title":"VerdictItem"},"VerdictLatestResponse":{"properties":{"ruling":{"type":"string","title":"Ruling"},"confidence":{"type":"number","title":"Confidence"},"score":{"type":"number","title":"Score"},"btc_price":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Btc Price"},"timestamp":{"type":"string","format":"date-time","title":"Timestamp"},"council_ruling":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Council Ruling"},"council_confidence":{"anyOf":[{"type":"number"},{"type":"null"}],"title":"Council Confidence"},"council_consensus":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Council Consensus"},"council_explanation":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Council Explanation"},"agents":{"anyOf":[{"items":{"$ref":"#/components/schemas/AgentVerdictItem"},"type":"array"},{"type":"null"}],"title":"Agents"},"council_mode":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Council Mode"},"macro_context":{"anyOf":[{"$ref":"#/components/schemas/MacroContextItem"},{"type":"null"}]},"cached":{"type":"boolean","title":"Cached"},"cache_ttl_seconds":{"type":"integer","title":"Cache Ttl Seconds"}},"type":"object","required":["ruling","confidence","score","btc_price","timestamp","cached","cache_ttl_seconds"],"title":"VerdictLatestResponse","example":{"agents":[{"confidence":0.78,"name":"CHAIN ORACLE","reasoning":"Exchange net flows turned sharply negative as long-term holders accumulate. SOPR above 1 confirms profitable holders are not capitulating.","vote":"BULLISH"},{"confidence":0.72,"name":"MACRO SAGE","reasoning":"A weakening dollar and easing real yields create a supportive backdrop for risk assets and hard-money narratives.","vote":"BULLISH"},{"confidence":0.72,"name":"SENTIMENT MONK","reasoning":"Fear & Greed sits in neutral territory, leaving room for upside without the froth that precedes local tops.","vote":"BULLISH"},{"confidence":0.72,"name":"TECH HAWK","reasoning":"Price holds above the 200 EMA with RSI in the mid-50s, a constructive trend posture without overbought risk.","vote":"BULLISH"},{"confidence":0.72,"name":"LIQUIDITY GUARDIAN","reasoning":"Order book depth is balanced and stablecoin reserves on exchanges are rising, signalling dry powder ready to deploy.","vote":"BULLISH"},{"confidence":0.78,"name":"RISK SHIELD","reasoning":"Short-term momentum is soft and a macro data print is imminent, so position sizing should stay measured.","vote":"REDUCE"}],"btc_price":67124.0,"cache_ttl_seconds":60,"cached":true,"confidence":0.278,"council_confidence":0.72,"council_consensus":"STRONG","council_explanation":"The council leaned bullish because on-chain demand is strengthening while broader market conditions stay supportive. Short-term momentum is soft, so the stance is a measured buy rather than aggressive.","council_mode":"council","council_ruling":"BUY","ruling":"ACCUMULATE","score":0.438,"timestamp":"2026-04-03T10:22:00Z"}},"WaitlistJoinRequest":{"properties":{"email":{"type":"string","title":"Email"}},"type":"object","required":["email"],"title":"WaitlistJoinRequest"},"WaitlistJoinResponse":{"properties":{"message":{"type":"string","title":"Message"}},"type":"object","required":["message"],"title":"WaitlistJoinResponse"},"WebhookCreateRequest":{"properties":{"url":{"type":"string","maxLength":2048,"title":"Url","description":"HTTPS URL that will receive POST payloads"},"events":{"items":{"type":"string","enum":["verdict.new","council.new","regime.change","ghost.signal","ghost.tp1","ghost.closed","macro.alert"]},"type":"array","maxItems":5,"minItems":1,"title":"Events","description":"Event types to subscribe to"}},"type":"object","required":["url","events"],"title":"WebhookCreateRequest"},"WebhookListResponse":{"properties":{"webhooks":{"items":{"$ref":"#/components/schemas/WebhookResponse"},"type":"array","title":"Webhooks"},"count":{"type":"integer","title":"Count"}},"type":"object","required":["webhooks","count"],"title":"WebhookListResponse"},"WebhookResponse":{"properties":{"id":{"type":"string","format":"uuid","title":"Id"},"url":{"type":"string","title":"Url"},"events":{"items":{"type":"string"},"type":"array","title":"Events"},"is_active":{"type":"boolean","title":"Is Active"},"created_at":{"type":"string","format":"date-time","title":"Created At"},"last_triggered_at":{"anyOf":[{"type":"string","format":"date-time"},{"type":"null"}],"title":"Last Triggered At"},"failures_since_success":{"type":"integer","title":"Failures Since Success"},"secret":{"anyOf":[{"type":"string"},{"type":"null"}],"title":"Secret"}},"type":"object","required":["id","url","events","is_active","created_at","last_triggered_at","failures_since_success"],"title":"WebhookResponse"},"WebhookTestRequest":{"properties":{"webhook_id":{"type":"string","format":"uuid","title":"Webhook Id"}},"type":"object","required":["webhook_id"],"title":"WebhookTestRequest"},"WebhookTestResponse":{"properties":{"success":{"type":"boolean","title":"Success"},"status_code":{"anyOf":[{"type":"integer"},{"type":"null"}],"title":"Status Code"},"message":{"type":"string","title":"Message"}},"type":"object","required":["success","status_code","message"],"title":"WebhookTestResponse"},"ZapierSignalResponse":{"properties":{"id":{"type":"string","title":"Id","description":"SHA-256[:16] fingerprint of ruling+ruled_at. Changes each time the verdict changes — use this as Zapier's deduplication key."},"verdict":{"type":"string","title":"Verdict","description":"Judiciary ruling (STRONG_BUY / BUY / ACCUMULATE / HOLD / REDUCE / SELL / STRONG_SELL / PENDING)."},"confidence":{"type":"number","title":"Confidence","description":"Judiciary composite confidence 0-100."},"regime":{"type":"string","title":"Regime","description":"Current market regime (BULL_TRENDING / HIGH_VOLATILITY / LOW_VOLATILITY / ...)."},"dark_pool":{"type":"integer","title":"Dark Pool","description":"Dark Pool composite score 0-100."},"rsi":{"type":"number","title":"Rsi","description":"BTC 1H RSI(14). 0 if unavailable."},"ema_200":{"type":"number","title":"Ema 200","description":"BTC 1H EMA(200). 0 if unavailable."},"btc_price":{"type":"number","title":"Btc Price","description":"Live BTC spot price. 0 if unavailable."},"ghost_status":{"type":"string","title":"Ghost Status","description":"Ghost Trader status (WAITING / IN_POSITION)."},"timestamp":{"type":"string","title":"Timestamp","description":"ISO 8601 datetime with Prague timezone offset, e.g. '2026-04-24T10:00:00+02:00'."},"readable_time":{"type":"string","title":"Readable Time","description":"Human-readable Prague CEST/CET time, e.g. '24 Apr 2026, 10:00 CEST'."}},"type":"object","required":["id","verdict","confidence","regime","dark_pool","rsi","ema_200","btc_price","ghost_status","timestamp","readable_time"],"title":"ZapierSignalResponse","description":"Signal payload for Zapier and n8n automation workflows.\n\nKey differences from the Pine Script endpoint (Sprint 229):\n- ``id``            — SHA-256 fingerprint of verdict+timestamp; changes on\n                      every new ruling, enabling Zapier deduplication.\n- ``timestamp``     — ISO 8601 with Prague TZ offset (e.g. +02:00) rather\n                      than Unix epoch, so Zapier can display the time directly.\n- ``readable_time`` — Human-readable Prague CEST/CET string for Telegram /\n                      Slack message bodies, e.g. \"24 Apr 2026, 10:00 CEST\".","example":{"btc_price":77882.0,"confidence":76.8,"dark_pool":65,"ema_200":76196.0,"ghost_status":"WAITING","id":"a1b2c3d4e5f6a7b8","readable_time":"24 Apr 2026, 10:00 CEST","regime":"LOW_VOLATILITY","rsi":49.5,"timestamp":"2026-04-24T10:00:00+02:00","verdict":"ACCUMULATE"}}},"securitySchemes":{"APIKeyHeader":{"type":"apiKey","description":"Your AIOKA Intelligence API key (format: aik_{tier}_{random})","in":"header","name":"X-API-Key"}}}}