{ "openapi": "3.1.0", "info": { "title": "Kronos Quant Signal API", "version": "2.1.0", "summary": "Auditable multi-asset financial forecasts for agents", "description": "Kronos publishes cached multi-timeframe forecasts across crypto, commodities, and pre-market equities. Includes calibrated ranges, risk context, auditable decision records, and cross-symbol regime detection. Research and decision support only; not financial advice. x402 payments are active on mainnet (Solana mainnet + Base mainnet) via the PayAI facilitator. See /.well-known/x402 for exact requirements.", "termsOfService": "https://kronos.seshat.markets/", "x-guidance": "Use the catalog first, prefer cached reads, cite generated_at/decision_id, and verify outcomes through the audit record. Do not treat directional context as a standalone trading instruction.", "x-disclaimer": "Kronos is a quantitative research signal, not investment advice. Forecasts are for research and integration purposes only. Always do your own research." }, "servers": [ { "url": "https://kronos.seshat.markets/api", "description": "Kronos production API" } ], "externalDocs": { "description": "Kronos agent quickstart", "url": "https://kronos.seshat.markets/kronos/skill.md" }, "x-discovery": { "llms_txt": "https://kronos.seshat.markets/kronos/llms.txt", "registry": "https://kronos.seshat.markets/kronos/registry.json", "x402": "https://kronos.seshat.markets/.well-known/x402" }, "x402": { "status": "active_mainnet", "payment_required": true, "mode": "mainnet", "networks": [ "solana:5eykt4UsFv8P8NJdTREpY1vzqKqZKvdp", "eip155:8453" ], "asset": "USDC", "facilitator": "https://facilitator.payai.network", "flows": [ "authorization", "upfront" ], "manifest": "https://kronos.seshat.markets/.well-known/x402", "note": "Mainnet production (Solana mainnet + Base mainnet). Real USDC payments settled via PayAI facilitator." }, "paths": { "/feeds/kronos/catalog": { "get": { "operationId": "getKronosCatalog", "tags": [ "Discovery" ], "summary": "GET /catalog", "description": "The first call an agent should make. Returns all supported symbols, timeframes, per-timeframe cache TTLs, model config, and the complete product catalog — every endpoint with its x402 price, data policy and description.", "responses": { "200": { "description": "JSON response", "content": { "application/json": { "schema": { "type": "object" } } } } } } }, "/feeds/kronos/sample/btc_usdt": { "get": { "operationId": "getKronosSample", "tags": [ "Discovery" ], "summary": "GET /sample/btc_usdt", "description": "Real BTC model output, all 5 timeframes. The delay is scaled per timeframe: 5m→2h, 15m→6h, 1h→24h, 4h→48h, 1d→72h. No friction, no wallet. For integration testing.", "responses": { "200": { "description": "Kronos forecast response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/KronosForecastResponse" } } } }, "404": { "description": "Error response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } } } }, "/feeds/kronos/accuracy-preview/{symbolKey}": { "get": { "operationId": "kronos_accuracy_preview", "tags": [ "Analysis" ], "summary": "GET /accuracy-preview/:symbol", "description": "Free preview of the accuracy report for a single symbol — total predictions, correct calls, hit rate, avg Brier score, calibration status and baselines (no-change/momentum accuracy + edge). Strips risk_state and candle_audit, which stay behind the paid /accuracy and /accuracy/candles endpoints.", "responses": { "200": { "description": "JSON response", "content": { "application/json": { "schema": { "type": "object" } } } } } } }, "/feeds/kronos/accuracy": { "get": { "operationId": "getKronosAccuracy", "tags": [ "Verification" ], "summary": "GET /accuracy", "parameters": [ { "name": "symbol", "in": "query", "required": false, "description": "Filter by Kronos symbol key (e.g. btc_usdt). Same on-demand discovery as path symbolKey.", "schema": { "type": "string", "pattern": "^[a-z0-9_]+$", "maxLength": 50, "example": "btc_usdt" } }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "default": 100, "minimum": 1, "maximum": 1000 } } ], "responses": { "200": { "description": "JSON response", "content": { "application/json": { "schema": { "type": "object" } } } }, "500": { "description": "Error response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Model accuracy report — measures the Kronos forecast model (predicted direction vs actual price at horizon). Total predictions, correct calls, hit rate, avg Brier score, calibration status, forecast coverage (conformal interval containment), baselines (no-change/momentum accuracy + edge vs best baseline) and current risk_state. Per-timeframe candle-level audit (MAPE/MAE) is available via /accuracy/candles. Filter by ?symbol and ?limit. Not the same as /agent/track-record, which measures Kronos as a market voter (option voted vs market outcome).", "x-payment-info": { "status": "active", "protocols": [ { "x402": {} } ], "price": { "mode": "fixed", "currency": "USD", "amount": "0.001000" } } } }, "/feeds/kronos/accuracy/candles": { "get": { "operationId": "kronos_accuracy_candles", "tags": [ "Analysis" ], "summary": "GET /accuracy/candles", "description": "Granular model performance — per-timeframe candle-level audit with MAPE (mean absolute percentage error) and MAE (mean absolute error) broken down by 5m, 15m, 1h, 4h, 1d. Computed from 47k+ audited candles. Shows exactly which timeframes the model predicts best. Filter by ?symbol and ?limit.", "responses": { "200": { "description": "JSON response", "content": { "application/json": { "schema": { "type": "object" } } } } }, "x-payment-info": { "status": "active", "protocols": [ { "x402": {} } ], "price": { "mode": "fixed", "currency": "USD", "amount": "0.005000" } } } }, "/feeds/kronos/accuracy/candles-preview": { "get": { "operationId": "kronos_accuracy_candles_preview", "tags": [ "Analysis" ], "summary": "GET /accuracy/candles-preview", "description": "Free preview of per-timeframe candle-level audit (MAPE/MAE by 5m, 15m, 1h, 4h, 1d) — aggregate across all symbols only, rounded to 1 decimal. Full precision and per-symbol filtering stay behind the paid /accuracy/candles endpoint.", "responses": { "200": { "description": "JSON response", "content": { "application/json": { "schema": { "type": "object" } } } } } } }, "/feeds/kronos/conviction-signals": { "get": { "operationId": "kronos_conviction_signals", "tags": [ "Forecast" ], "summary": "GET /conviction-signals", "description": "Free public signal — the latest pre-midnight prediction per non-BTC symbol, ranked by conviction (distance of upside_prob from 50%), top 3. Delayed by design (cutoff: before today's midnight) so it never undercuts the paid, fresh /predict and /decisions endpoints.", "responses": { "200": { "description": "JSON response", "content": { "application/json": { "schema": { "type": "object" } } } } } } }, "/feeds/kronos/risk": { "get": { "operationId": "getKronosRisk", "tags": [ "Signal" ], "summary": "GET /risk", "description": "Check if the model is hot or cold. Returns current streak, cooldown status and confidence multiplier — so you know whether to trust the next signal or wait.", "responses": { "200": { "description": "JSON response", "content": { "application/json": { "schema": { "type": "object" } } } }, "503": { "description": "Kronos is disabled", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } } } }, "/feeds/kronos/risk/history": { "get": { "operationId": "kronos_risk_history", "tags": [ "Analysis" ], "summary": "GET /risk/history", "description": "Historical streak analytics — best and worst streaks ever, broken down globally, per symbol (BTC, ETH, SOL, XRP, etc.) and per timeframe (5m, 15m, 1h, 4h, 1d). Includes date ranges for each streak. Separate from /risk so expensive all-history aggregation does not affect live decisions. Only counts decisions from the default preset (standard agent pipeline, not playground experiments).", "responses": { "200": { "description": "JSON response", "content": { "application/json": { "schema": { "type": "object" } } } } }, "x-payment-info": { "status": "active", "protocols": [ { "x402": {} } ], "price": { "mode": "fixed", "currency": "USD", "amount": "0.020000" } } } }, "/feeds/kronos/predict/{symbolKey}": { "get": { "operationId": "getKronosPrediction", "tags": [ "Forecast" ], "summary": "GET /predict/:symbol?timeframes=", "description": "Fresh on-demand forecast for any supported asset (BTC, ETH, SOL, etc). Returns all timeframes by default, or filter with ?timeframes=5m,1h. $0.01 per timeframe, capped at $0.04 (20% off when requesting all 5). ?refresh=true forces GPU inference (bypasses cache) at 2x price ($0.02/TF, cap $0.08), rate-limited to 2/min per IP and 3/5min per payer wallet. Horizon: 5m→6h, 15m→24h, 1h→2d, 4h→10d, 1d→14d.", "x-payment-info": { "status": "active", "protocols": [ { "x402": {} } ], "price": { "mode": "fixed", "currency": "USD", "amount": "0.010000" } }, "parameters": [ { "name": "symbolKey", "in": "path", "required": true, "description": "Kronos symbol key — on-demand discovery for any Gate.io symbol (crypto, stocks, forex, metals, commodities, indices). Curated: btc_usdt, eth_usdt, sol_usdt, xrp_usdt, bnb_usdt. On-demand examples: nvda_usdt, xauusd_usdt, eurusd_usdt, doge_usdt. Unknown symbols return 404 with available keys.", "schema": { "type": "string", "pattern": "^[a-z0-9_]+$", "maxLength": 50, "examples": [ "btc_usdt", "eth_usdt", "nvda_usdt", "xauusd_usdt", "eurusd_usdt" ] } }, { "name": "timeframes", "in": "query", "required": false, "description": "Comma-separated timeframes (5m, 15m, 1h, 4h, 1d). Defaults to all 5 for /predict, 5m for /forecast-distribution.", "schema": { "type": "string", "pattern": "^(5m|15m|1h|4h|1d)(,(5m|15m|1h|4h|1d))*$", "maxLength": 20, "example": "5m,15m,1h,4h,1d" } } ], "responses": { "200": { "description": "Kronos forecast response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/KronosForecastResponse" } } } }, "402": { "description": "x402 payment challenge. Returned by paid endpoints when no valid payment is provided. The response body contains x402Version and accepts[] with the exact payment requirements (network, asset, amount, payTo, scheme). See /.well-known/x402 for the full manifest.", "content": { "application/json": { "schema": { "type": "object", "properties": { "x402Version": { "type": "integer", "const": 2 }, "accepts": { "type": "array", "items": { "type": "object" } } } } } } }, "404": { "description": "No cached signal is available", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Kronos is disabled", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } } } }, "/feeds/kronos/decision/{decisionId}": { "get": { "operationId": "getKronosDecision", "tags": [ "Verification" ], "summary": "GET /decision/:id", "parameters": [ { "name": "decisionId", "in": "path", "required": true, "schema": { "type": "string", "format": "uuid" }, "description": "UUID of the decision to retrieve (from /predict response or /decisions list)." } ], "responses": { "200": { "description": "JSON response", "content": { "application/json": { "schema": { "type": "object" } } } }, "404": { "description": "Error response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "description": "Retrieve a single past decision by its UUID. Returns the full prediction, audit status, forecast bounds, Brier score and pred_candles — everything you need to verify or replay a call. Free, rate-limited (30 req/5min)." } }, "/feeds/kronos/decisions": { "get": { "operationId": "getKronosDecisions", "tags": [ "Verification" ], "summary": "GET /decisions", "parameters": [ { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "default": 50, "maximum": 100 }, "description": "Number of decisions to return (max 100, max 20 with detail=1)." }, { "name": "symbol", "in": "query", "required": false, "schema": { "type": "string", "maxLength": 50 }, "description": "Filter by symbol key (e.g. btc_usdt)" }, { "name": "status", "in": "query", "required": false, "schema": { "type": "string", "enum": [ "audited", "auditing", "pending" ] }, "description": "Filter by audit status: audited (has outcome + Brier score), auditing (candle audit in progress), pending (not yet audited)." }, { "name": "days", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1, "maximum": 365 }, "description": "Lookback window in days (e.g. days=30 for last 30 days)." }, { "name": "detail", "in": "query", "required": false, "schema": { "type": "string", "enum": [ "0", "1", "true", "false" ] }, "description": "Set to 1 or true to include full pred_candles arrays (48-60 OHLC candles per timeframe). Default: stripped to reduce payload size — use /decision/{id} for full detail on a single decision." } ], "responses": { "200": { "description": "JSON response", "content": { "application/json": { "schema": { "type": "object" } } } } }, "description": "Browse recent predictions — each with decision ID, symbol, consensus, audit status, Brier score and per-timeframe summary (direction, change_pct, ranges). Results are ordered by predicted_at DESC (most recent first). Use ?detail=1 to include full pred_candles arrays (default: stripped — use /decision/:id for single full detail). Filter by ?symbol (e.g. btc_usdt), ?status (audited/auditing/pending), ?days (lookback), ?limit (max 100, max 20 with ?detail=1 — pred_candles are ~2KB/tf so detail responses are capped lower to prevent resource exhaustion). Without ?status, returns the most recent decisions regardless of audit state (audit fields will be null for pending decisions).", "x-payment-info": { "status": "active", "protocols": [ { "x402": {} } ], "price": { "mode": "fixed", "currency": "USD", "amount": "0.001000" } } } }, "/feeds/kronos/forecast-evolution/{symbolKey}": { "get": { "operationId": "getForecastEvolution", "tags": [ "Analysis" ], "summary": "GET /forecast-evolution/:symbol", "description": "How the forecast for a symbol has changed over time — direction flips, confidence drift, upside_prob revision and audited accuracy of each revision. Each revision includes market_key (e.g. btc-10m, btc-1h, or null for background scheduler predictions) and timeframes used. Reveals the trajectory of the model's opinion, not just the latest reading. ?hours to set lookback (default 24, max 168). ?market_key=btc-10m to filter by specific market. ?limit to cap revisions (default 144, max 1000). ?summary=1 for summary-only (no revisions array).", "x-payment-info": { "status": "active", "protocols": [ { "x402": {} } ], "price": { "mode": "fixed", "currency": "USD", "amount": "0.005000" } }, "parameters": [ { "name": "symbolKey", "in": "path", "required": true, "description": "Kronos symbol key — on-demand discovery for any Gate.io symbol (crypto, stocks, forex, metals, commodities, indices). Curated: btc_usdt, eth_usdt, sol_usdt, xrp_usdt, bnb_usdt. On-demand examples: nvda_usdt, xauusd_usdt, eurusd_usdt, doge_usdt. Unknown symbols return 404 with available keys.", "schema": { "type": "string", "pattern": "^[a-z0-9_]+$", "maxLength": 50, "examples": [ "btc_usdt", "eth_usdt", "nvda_usdt", "xauusd_usdt", "eurusd_usdt" ] } }, { "name": "hours", "in": "query", "required": false, "schema": { "type": "integer", "default": 24, "minimum": 1, "maximum": 168 }, "description": "Lookback window in hours (default 24, max 168)." }, { "name": "market_key", "in": "query", "required": false, "schema": { "type": "string", "maxLength": 50 }, "description": "Filter by market key, e.g. btc-10m, btc-1h, btc-12h. If omitted, returns all revisions including background scheduler predictions (market_key=null)." }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "default": 144, "maximum": 1000 }, "description": "Maximum number of revisions to return (default 144, max 1000)." }, { "name": "summary", "in": "query", "required": false, "schema": { "type": "string", "enum": [ "0", "1", "true", "false" ] }, "description": "Set to 1 or true to return only the summary block (no revisions array)." } ], "responses": { "200": { "description": "JSON response", "content": { "application/json": { "schema": { "type": "object" } } } }, "503": { "description": "Kronos is disabled", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } } } }, "/feeds/kronos/forecast-distribution/{symbolKey}": { "get": { "operationId": "getKronosForecastDistribution", "tags": [ "Forecast" ], "summary": "GET /forecast-distribution/:symbol?timeframes=", "description": "Unlike /predict which returns the median-averaged prediction, this returns the full empirical distribution from sample_count independent inference paths. At each prediction step you get p05-p95 percentiles for close price, plus the final return percentile distribution. This is the true probabilistic output of Kronos — agents can use it to compute Value-at-Risk, confidence intervals, or any custom decision rule. Price scales with timeframes: $0.01 per TF, capped at $0.04 for all 5.", "x-payment-info": { "status": "active", "protocols": [ { "x402": {} } ], "price": { "mode": "dynamic", "currency": "USD", "price_per_tf": "0.010000", "price_cap": "0.040000" } }, "parameters": [ { "name": "symbolKey", "in": "path", "required": true, "description": "Kronos symbol key — on-demand discovery for any Gate.io symbol (crypto, stocks, forex, metals, commodities, indices). Curated: btc_usdt, eth_usdt, sol_usdt, xrp_usdt, bnb_usdt. On-demand examples: nvda_usdt, xauusd_usdt, eurusd_usdt, doge_usdt. Unknown symbols return 404 with available keys.", "schema": { "type": "string", "pattern": "^[a-z0-9_]+$", "maxLength": 50, "examples": [ "btc_usdt", "eth_usdt", "nvda_usdt", "xauusd_usdt", "eurusd_usdt" ] } }, { "name": "timeframes", "in": "query", "required": false, "description": "Comma-separated timeframes (5m, 15m, 1h, 4h, 1d). Defaults to all 5 for /predict, 5m for /forecast-distribution.", "schema": { "type": "string", "pattern": "^(5m|15m|1h|4h|1d)(,(5m|15m|1h|4h|1d))*$", "maxLength": 20, "example": "5m,15m,1h,4h,1d" } } ], "responses": { "200": { "description": "Forecast distribution with percentiles per step", "content": { "application/json": { "schema": { "type": "object", "properties": { "pair": { "type": "string" }, "as_of": { "type": "string", "format": "date-time" }, "generated_at": { "type": "string", "format": "date-time" }, "timeframes": { "type": "object", "additionalProperties": { "type": "object", "properties": { "current_price": { "type": "number" }, "pred_len": { "type": "integer" }, "sample_count": { "type": "integer" }, "upside_prob": { "type": "number" }, "as_of": { "type": "string" }, "elapsed_s": { "type": "number" }, "final_price": { "type": "object", "properties": { "p05": { "type": "number" }, "p10": { "type": "number" }, "p25": { "type": "number" }, "p50": { "type": "number" }, "p75": { "type": "number" }, "p90": { "type": "number" }, "p95": { "type": "number" } } }, "final_return_pct": { "type": "object", "properties": { "p05": { "type": "number" }, "p10": { "type": "number" }, "p25": { "type": "number" }, "p50": { "type": "number" }, "p75": { "type": "number" }, "p90": { "type": "number" }, "p95": { "type": "number" } } }, "per_step": { "type": "array", "items": { "type": "object", "properties": { "step": { "type": "integer" }, "p05": { "type": "number" }, "p10": { "type": "number" }, "p25": { "type": "number" }, "p50": { "type": "number" }, "p75": { "type": "number" }, "p90": { "type": "number" }, "p95": { "type": "number" } } } } } } } } } } } }, "402": { "description": "x402 payment challenge. Returned by paid endpoints when no valid payment is provided. The response body contains x402Version and accepts[] with the exact payment requirements (network, asset, amount, payTo, scheme). See /.well-known/x402 for the full manifest.", "content": { "application/json": { "schema": { "type": "object", "properties": { "x402Version": { "type": "integer", "const": 2 }, "accepts": { "type": "array", "items": { "type": "object" } } } } } } }, "503": { "description": "Kronos is disabled", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } } } }, "/feeds/kronos/historical-analogs/{symbolKey}": { "get": { "operationId": "getHistoricalAnalogs", "tags": [ "Analysis" ], "summary": "GET /historical-analogs/:symbol", "description": "Past audited situations similar to the current forecast (same direction, similar confidence and upside_prob) and what actually happened — accuracy, median change, outcome distribution, max adverse/favorable and percentiles. Empirical evidence from analogous situations. ?days, ?limit, ?confidenceTol, ?upsideTol to tune matching. ?full=1 returns all analogs (default: top 10 + summary).", "x-payment-info": { "status": "active", "protocols": [ { "x402": {} } ], "price": { "mode": "fixed", "currency": "USD", "amount": "0.010000" } }, "parameters": [ { "name": "symbolKey", "in": "path", "required": true, "description": "Kronos symbol key — on-demand discovery for any Gate.io symbol (crypto, stocks, forex, metals, commodities, indices). Curated: btc_usdt, eth_usdt, sol_usdt, xrp_usdt, bnb_usdt. On-demand examples: nvda_usdt, xauusd_usdt, eurusd_usdt, doge_usdt. Unknown symbols return 404 with available keys.", "schema": { "type": "string", "pattern": "^[a-z0-9_]+$", "maxLength": 50, "examples": [ "btc_usdt", "eth_usdt", "nvda_usdt", "xauusd_usdt", "eurusd_usdt" ] } }, { "name": "days", "in": "query", "required": false, "schema": { "type": "integer", "default": 30, "minimum": 1, "maximum": 365 }, "description": "Lookback days (default 30, max 365)" }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "default": 200, "minimum": 1, "maximum": 500 }, "description": "Max analogs to search (default 200, max 500). ?full=1 returns all; default returns top 10 + summary." }, { "name": "confidenceTol", "in": "query", "required": false, "schema": { "type": "number", "default": 0.15, "minimum": 0.01, "maximum": 0.5 } }, { "name": "upsideTol", "in": "query", "required": false, "schema": { "type": "number", "default": 15, "minimum": 1, "maximum": 50 } } ], "responses": { "200": { "description": "JSON response", "content": { "application/json": { "schema": { "type": "object" } } } }, "404": { "description": "Error response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Kronos is disabled", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } } } }, "/feeds/kronos/regime": { "get": { "operationId": "getKronosRegime", "tags": [ "Analysis" ], "summary": "GET /regime", "description": "Cross-symbol regime signal — how aligned are all Kronos-covered assets right now? When ≥3 symbols share the same consensus direction, it signals risk-on or risk-off. Includes historical alignment events with accuracy. ?days and ?minSymbols to configure.", "x-payment-info": { "status": "active", "protocols": [ { "x402": {} } ], "price": { "mode": "fixed", "currency": "USD", "amount": "0.020000" } }, "parameters": [ { "name": "days", "in": "query", "required": false, "schema": { "type": "integer", "default": 30, "minimum": 1, "maximum": 365 } }, { "name": "minSymbols", "in": "query", "required": false, "schema": { "type": "integer", "default": 3, "minimum": 2, "maximum": 10 } } ], "responses": { "200": { "description": "JSON response", "content": { "application/json": { "schema": { "type": "object" } } } }, "503": { "description": "Kronos is disabled", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } } } }, "/feeds/kronos/agent/track-record": { "get": { "operationId": "getKronosAgentTrackRecord", "tags": [ "Agent" ], "summary": "GET /agent/track-record", "description": "Agent track record — measures Kronos as a market voter (option voted vs market outcome): win rate, Brier score, per-coin breakdown and daily evolution. Filter by ?coin and ?days. Not the same as /accuracy, which measures the Kronos forecast model (predicted direction vs actual price at horizon).", "parameters": [ { "name": "coin", "in": "query", "required": false, "schema": { "type": "string", "maxLength": 20 } }, { "name": "days", "in": "query", "required": false, "schema": { "type": "integer", "default": 30, "maximum": 365 } } ], "responses": { "200": { "description": "JSON response", "content": { "application/json": { "schema": { "type": "object" } } } }, "404": { "description": "Error response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "x-payment-info": { "status": "active", "protocols": [ { "x402": {} } ], "price": { "mode": "fixed", "currency": "USD", "amount": "0.001000" } } } }, "/feeds/kronos/agent/votes": { "get": { "operationId": "getKronosAgentVotes", "tags": [ "Agent" ], "summary": "GET /agent/votes", "description": "Recent agent votes with market context, confidence, rationale and outcome. Paginate with ?limit (default 50) and ?offset, filter by ?coin. ?full=1 includes rationale and research_notes text.", "parameters": [ { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "default": 50, "minimum": 1, "maximum": 500 }, "description": "Max votes to return (default 50, max 500)" }, { "name": "offset", "in": "query", "required": false, "schema": { "type": "integer", "default": 0, "minimum": 0, "maximum": 10000 } }, { "name": "coin", "in": "query", "required": false, "schema": { "type": "string", "maxLength": 20 } } ], "responses": { "200": { "description": "JSON response", "content": { "application/json": { "schema": { "type": "object" } } } }, "404": { "description": "Error response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } }, "x-payment-info": { "status": "active", "protocols": [ { "x402": {} } ], "price": { "mode": "fixed", "currency": "USD", "amount": "0.003000" } } } }, "/feeds/kronos/agent/signals": { "get": { "operationId": "getKronosAgentSignals", "tags": [ "Agent" ], "summary": "GET /agent/signals", "description": "Live view of open markets where the agent is actively voting — includes vote status and cached predictions per market.", "x-payment-info": { "status": "active", "protocols": [ { "x402": {} } ], "price": { "mode": "fixed", "currency": "USD", "amount": "0.005000" } }, "responses": { "200": { "description": "JSON response", "content": { "application/json": { "schema": { "type": "object" } } } }, "404": { "description": "Error response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } } } }, "/feeds/kronos/composite-preview/{symbolKey}": { "get": { "operationId": "kronos_composite_preview", "tags": [ "Agent" ], "summary": "GET /composite-preview/:symbol", "description": "Free preview of the Quant (Kronos) vs Crowd composite signal — same agreement/divergence read as /composite, aggregated/delayed. ?days controls lookback (default 30, max 365). Full per-duration breakdown and history stay behind the paid endpoint.", "responses": { "200": { "description": "JSON response", "content": { "application/json": { "schema": { "type": "object" } } } } } } }, "/feeds/kronos/composite/{symbolKey}": { "get": { "operationId": "getKronosComposite", "tags": [ "Analysis" ], "summary": "GET /composite/:symbol", "description": "Quant vs Crowd — compares Kronos forecasts against LLM agents and human votes. Shows agreement/divergence rates, who wins when they disagree, per-duration breakdown and the current live signal. ?days to set lookback.", "x-payment-info": { "status": "active", "protocols": [ { "x402": {} } ], "price": { "mode": "fixed", "currency": "USD", "amount": "0.010000" } }, "parameters": [ { "name": "symbolKey", "in": "path", "required": true, "description": "Kronos symbol key — on-demand discovery for any Gate.io symbol (crypto, stocks, forex, metals, commodities, indices). Curated: btc_usdt, eth_usdt, sol_usdt, xrp_usdt, bnb_usdt. On-demand examples: nvda_usdt, xauusd_usdt, eurusd_usdt, doge_usdt. Unknown symbols return 404 with available keys.", "schema": { "type": "string", "pattern": "^[a-z0-9_]+$", "maxLength": 50, "examples": [ "btc_usdt", "eth_usdt", "nvda_usdt", "xauusd_usdt", "eurusd_usdt" ] } }, { "name": "days", "in": "query", "required": false, "schema": { "type": "integer", "default": 30, "minimum": 1, "maximum": 365 } } ], "responses": { "200": { "description": "JSON response", "content": { "application/json": { "schema": { "type": "object" } } } }, "404": { "description": "Error response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } } } }, "/feeds/kronos/confluence/{symbolKey}": { "get": { "operationId": "kronos_confluence", "tags": [ "Agent" ], "summary": "GET /confluence/:symbol", "description": "Fuses the Kronos model's directional forecast with independent external signals — social sentiment from Gate.io MCP (bullish/bearish/neutral) and the quant-vs-crowd composite (Polymarket-style votes) — into a simple AGREE/CONFLICT/NEUTRAL tag per signal plus an overall confluence score. Lightweight: reuses cached sentiment (60s TTL) and cached consensus — no fresh GPU inference. ?days controls crowd lookback (default 30, max 365).", "responses": { "200": { "description": "JSON response", "content": { "application/json": { "schema": { "type": "object" } } } } }, "x-payment-info": { "status": "active", "protocols": [ { "x402": {} } ], "price": { "mode": "fixed", "currency": "USD", "amount": "0.010000" } } } }, "/feeds/kronos/benchmark-preview": { "get": { "operationId": "kronos_benchmark_preview", "tags": [ "Agent" ], "summary": "GET /benchmark-preview", "description": "Free preview of the benchmark leaderboard — ranks Kronos against every LLM agent and human forecaster by accuracy and Brier score, fixed 7-day window, min 10 resolved, no per-coin detail. Configurable window and per-coin breakdown stay behind the paid /benchmark endpoint.", "responses": { "200": { "description": "JSON response", "content": { "application/json": { "schema": { "type": "object" } } } } } } }, "/feeds/kronos/benchmark": { "get": { "operationId": "kronos_benchmark", "tags": [ "Agent" ], "summary": "GET /benchmark", "description": "Benchmark leaderboard — ranks Kronos against every LLM agent and human forecasters by accuracy and Brier score on crypto markets. Kronos model-level stats (audited predictions, accuracy, Brier). Use ?detail=1 for per-coin breakdown. ?days for lookback, ?minResolved to filter agents with too few votes.", "responses": { "200": { "description": "JSON response", "content": { "application/json": { "schema": { "type": "object" } } } } }, "x-payment-info": { "status": "active", "protocols": [ { "x402": {} } ], "price": { "mode": "fixed", "currency": "USD", "amount": "0.020000" } } } }, "/feeds/kronos/digest/{symbolKey}": { "get": { "operationId": "kronos_digest", "tags": [ "Forecast" ], "summary": "GET /digest/:symbol", "description": "Combines 7 Kronos data sources (predict, risk, forecast-evolution, regime, historical-analogs, composite quant-vs-crowd, accuracy) into one insight-driven digest. An AI agent cross-references these to surface non-obvious insights: track-record reality checks (is the confidence justified by analogs?), timeframe contradictions, quant-vs-crowd divergences, calibration warnings, and risk context. Returns the text digest plus structured metadata (analog accuracy, model accuracy, crowd accuracy, live divergences). Saves the agent 6 paid calls ($0.06+). Priced at $0.03.", "parameters": [ { "name": "symbolKey", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9_]+$", "examples": [ "btc_usdt", "eth_usdt", "nvda_usdt", "xauusd_usdt", "eurusd_usdt" ] }, "description": "Kronos symbol key (on-demand discovery: any Gate.io symbol — crypto, stocks, forex, metals, commodities, indices). Curated: btc_usdt, eth_usdt, sol_usdt, xrp_usdt, bnb_usdt, bz_usdt, ng_usdt, xaut_usdt, xag_usdt, cl_usdt, openai_usdt, anthropic_usdt, nvdax_usdt, tslax_usdt, metax_usdt, eurusd_usdt, gbpusd_usdt. On-demand examples: nvda_usdt, tsla_usdt, doge_usdt, ada_usdt. Unknown symbols return 404 with available keys." } ], "responses": { "200": { "description": "JSON response", "content": { "application/json": { "schema": { "type": "object" } } } } }, "x-payment-info": { "status": "active", "protocols": [ { "x402": {} } ], "price": { "mode": "fixed", "currency": "USD", "amount": "0.030000" } } } }, "/feeds/kronos/market-brief/{symbolKey}": { "get": { "operationId": "kronos_market_brief", "tags": [ "Market Intelligence" ], "summary": "GET /market-brief/:symbol", "description": "Combines Gate.io news, social sentiment, exchange announcements, event attribution, historical resolution context, similar-market outcomes, and Kronos forecast/risk/regime data. Returns an AI-generated market brief with market narrative, catalysts, risks, contradictions, model alignment, historical context, constructive next step, source status and freshness. External claims are required to reference supplied evidence; unavailable sources are reported rather than hidden.", "parameters": [ { "name": "symbolKey", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9_]+$", "examples": [ "btc_usdt", "eth_usdt", "nvda_usdt", "xauusd_usdt", "eurusd_usdt" ] }, "description": "Kronos symbol key (on-demand discovery: any Gate.io symbol — crypto, stocks, forex, metals, commodities, indices). Curated: btc_usdt, eth_usdt, sol_usdt, xrp_usdt, bnb_usdt, bz_usdt, ng_usdt, xaut_usdt, xag_usdt, cl_usdt, openai_usdt, anthropic_usdt, nvdax_usdt, tslax_usdt, metax_usdt, eurusd_usdt, gbpusd_usdt. On-demand examples: nvda_usdt, tsla_usdt, doge_usdt, ada_usdt. Unknown symbols return 404 with available keys." } ], "responses": { "200": { "description": "JSON response", "content": { "application/json": { "schema": { "type": "object" } } } } }, "x-payment-info": { "status": "active", "protocols": [ { "x402": {} } ], "price": { "mode": "fixed", "currency": "USD", "amount": "0.050000" } } } }, "/feeds/similar-markets": { "get": { "operationId": "similar_markets_text", "tags": [ "Semantic Similarity" ], "summary": "GET /feeds/similar-markets", "description": "Semantic market discovery by text query. Embeds arbitrary text (for example, an open market question) and returns the closest resolved instance from each distinct market template via pgvector cosine search. Results are automatically isolated to the domain of the closest match (crypto, commodity, equity, forex, aviation, environment, space, maritime, and so on), so financial markets are never mixed with flights, pollution or unrelated domains. Embeddings include title, asset, market type, duration, and available sentiment/news; the resolved outcome is deliberately excluded from the embedding to prevent answer leakage. winnerLabel is the outcome of the representative returned instance, not a historical probability. Use ?domain, ?coin and ?kind for explicit comparability, or /feeds/similar-markets/outcome-stats for an aggregated historical outcome distribution.", "parameters": [ { "name": "text", "in": "query", "required": true, "schema": { "type": "string", "maxLength": 2000 }, "description": "Market question or arbitrary text to find similar resolved markets" }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "default": 10, "minimum": 1, "maximum": 50 }, "description": "Max similar markets to return (default 10, max 50)" }, { "name": "coin", "in": "query", "required": false, "schema": { "type": "string", "maxLength": 20 }, "description": "Filter by coin_id (e.g. bitcoin)" }, { "name": "kind", "in": "query", "required": false, "schema": { "type": "string" }, "description": "Filter by market kind (short, yesno, ath, milestone, range)" } ], "responses": { "200": { "description": "JSON response", "content": { "application/json": { "schema": { "type": "object" } } } } }, "x-payment-info": { "status": "active", "protocols": [ { "x402": {} } ], "price": { "mode": "fixed", "currency": "USD", "amount": "0.005000" } } } }, "/feeds/similar-markets/outcome-stats": { "get": { "operationId": "similar_markets_outcome_stats", "tags": [ "Semantic Similarity" ], "summary": "GET /feeds/similar-markets/outcome-stats", "description": "Outcome aggregation — the core B2B semantic search product. Given a market question (text) or instance ID, finds comparable resolved markets and returns their outcome distribution (for example, '62% Up, 38% Down across 50 similar markets'). Domain isolation is automatic, and coin plus market kind are inferred when omitted, preventing incompatible outcomes from financial, aviation, environment or other domains from being mixed. Includes sample sufficiency, similarity threshold, per-coin breakdown and top matches. Supports explicit ?domain, ?coin and ?kind filters.", "parameters": [ { "name": "text", "in": "query", "required": false, "schema": { "type": "string", "maxLength": 2000 }, "description": "Market question text (alternative to instanceId)" }, { "name": "instanceId", "in": "query", "required": false, "schema": { "type": "integer" }, "description": "Market instance ID (alternative to text)" }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "default": 50, "minimum": 1, "maximum": 200 }, "description": "Max similar markets to aggregate (default 50, max 200)" }, { "name": "coin", "in": "query", "required": false, "schema": { "type": "string", "maxLength": 20 } }, { "name": "kind", "in": "query", "required": false, "schema": { "type": "string" } } ], "responses": { "200": { "description": "JSON response", "content": { "application/json": { "schema": { "type": "object" } } } } }, "x-payment-info": { "status": "active", "protocols": [ { "x402": {} } ], "price": { "mode": "fixed", "currency": "USD", "amount": "0.010000" } } } }, "/feeds/agent-intelligence/behavioral-correlations": { "get": { "operationId": "behavioral_correlations", "tags": [ "Agent Intelligence" ], "summary": "GET /feeds/agent-intelligence/behavioral-correlations", "description": "Semantic (behavioral) correlation — how similarly two agents REASON, via embeddings of their vote rationale. Two agents can vote identically for opposite reasons, or vote oppositely via near-identical reasoning — this endpoint sees that, unlike outcome-based correlation which only measures whether they voted the same option.", "parameters": [ { "name": "minSamples", "in": "query", "required": false, "schema": { "type": "integer", "default": 3, "minimum": 1, "maximum": 100 }, "description": "Minimum shared markets for a pair to be included" }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "default": 50, "minimum": 1, "maximum": 100 }, "description": "Max correlation pairs to return (max 100, default 50)" } ], "responses": { "200": { "description": "JSON response", "content": { "application/json": { "schema": { "type": "object" } } } } }, "x-payment-info": { "status": "active", "protocols": [ { "x402": {} } ], "price": { "mode": "fixed", "currency": "USD", "amount": "0.010000" } } } }, "/feeds/agent-intelligence/rationale-novelty": { "get": { "operationId": "rationale_novelty", "tags": [ "Agent Intelligence" ], "summary": "GET /feeds/agent-intelligence/rationale-novelty", "description": "Rationale novelty detection — compares each vote rationale with that agent's own prior reasoning using pgvector cosine similarity. Excludes non-reasoning providers such as Kronos and, by default, same-asset votes generated within the same 120-second batch to avoid contextual false positives. Each flag includes reuseScope, severity and current/prior market context. Use groupBy=agent for one worst case per agent, includeSameBatch=1 for diagnostic same-batch matches, and threshold to override the default 0.97.", "parameters": [ { "name": "agentId", "in": "query", "required": false, "schema": { "type": "integer", "minimum": 1 }, "description": "Filter to a specific agent by ID (positive integer). Omit to scan all agents." }, { "name": "threshold", "in": "query", "required": false, "schema": { "type": "number", "default": 0.97, "minimum": 0, "maximum": 1 }, "description": "Cosine similarity threshold above which rationale is flagged as recycled" }, { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "default": 100, "minimum": 1, "maximum": 100 } }, { "name": "groupBy", "in": "query", "required": false, "schema": { "type": "string", "enum": [ "agent" ], "default": null }, "description": "Set to 'agent' to return one flag per agent (their worst case). Default returns all flags ordered by similarity DESC." }, { "name": "includeSameBatch", "in": "query", "required": false, "schema": { "type": "boolean", "default": false }, "description": "Include diagnostic matches for the same asset generated within 120 seconds. Excluded by default because they usually share legitimate context." } ], "responses": { "200": { "description": "JSON response", "content": { "application/json": { "schema": { "type": "object" } } } } }, "x-payment-info": { "status": "active", "protocols": [ { "x402": {} } ], "price": { "mode": "fixed", "currency": "USD", "amount": "0.010000" } } } }, "/feeds/kronos/market-context/{symbolKey}": { "get": { "operationId": "kronos_market_context", "tags": [ "Market Intelligence" ], "summary": "GET /market-context/:symbol", "description": "Combines Binance/OKX/Gate cross-venue crypto context (funding, open interest, basis, spot, liquidations, options IV) with Gate on-demand market discovery for crypto, stocks, forex, metals, commodities and indices. On-demand crypto symbols aggregate Binance+OKX+Gate in parallel with graceful degradation. Returns source status, options availability and cached Kronos context. TradFi instruments are identified as perpetuals, CFDs or tokenized exposures; no market is created and no auto-voting is enabled.", "parameters": [ { "name": "symbolKey", "in": "path", "required": true, "schema": { "type": "string", "pattern": "^[a-z0-9_]+$", "examples": [ "btc_usdt", "eth_usdt", "nvda_usdt", "xauusd_usdt", "eurusd_usdt" ] }, "description": "Kronos symbol key (on-demand discovery: any Gate.io symbol — crypto, stocks, forex, metals, commodities, indices). Curated: btc_usdt, eth_usdt, sol_usdt, xrp_usdt, bnb_usdt. On-demand examples: nvda_usdt, tsla_usdt, xauusd_usdt, eurusd_usdt, doge_usdt. Unknown symbols return 404 with available keys." } ], "responses": { "200": { "description": "JSON response", "content": { "application/json": { "schema": { "type": "object" } } } }, "404": { "description": "JSON response", "content": { "application/json": { "schema": { "type": "object" } } } }, "502": { "description": "JSON response", "content": { "application/json": { "schema": { "type": "object" } } } } }, "x-payment-info": { "status": "active", "protocols": [ { "x402": {} } ], "price": { "mode": "fixed", "currency": "USD", "amount": "0.030000" } } } }, "/feeds/kronos/playground/{symbolKey}": { "post": { "operationId": "runKronosPlayground", "tags": [ "Experimental" ], "summary": "POST /playground/:symbol", "description": "Experimental — run a prediction with custom inference params (T, top_p, sample_count, pred_len, lookback). Price scales linearly with sample_count ($0.005 per 20 samples, capped at $0.025 for sample_count=100). sample_count >100 is rejected. Rate-limited 3/5min per IP and 3/5min per payer wallet.", "x-payment-info": { "status": "active", "protocols": [ { "x402": {} } ], "price": { "mode": "dynamic", "currency": "USD", "base_amount": "0.005000", "price_tiers": "sample_count 1-20: $0.005, 21-40: $0.010, 41-60: $0.015, 61-80: $0.020, 81-100: $0.025. >100 rejected." } }, "parameters": [ { "name": "symbolKey", "in": "path", "required": true, "description": "Kronos symbol key — on-demand discovery for any Gate.io symbol (crypto, stocks, forex, metals, commodities, indices). Curated: btc_usdt, eth_usdt, sol_usdt, xrp_usdt, bnb_usdt. On-demand examples: nvda_usdt, xauusd_usdt, eurusd_usdt, doge_usdt. Unknown symbols return 404 with available keys.", "schema": { "type": "string", "pattern": "^[a-z0-9_]+$", "maxLength": 50, "examples": [ "btc_usdt", "eth_usdt", "nvda_usdt", "xauusd_usdt", "eurusd_usdt" ] } } ], "requestBody": { "required": false, "content": { "application/json": { "schema": { "type": "object", "properties": { "timeframes": { "type": "array", "items": { "type": "string", "enum": ["5m", "15m", "1h", "4h", "1d"] } }, "config": { "type": "object", "properties": { "T": { "type": "number", "minimum": 0, "maximum": 2 }, "top_p": { "type": "number", "minimum": 0, "maximum": 1 }, "sample_count": { "type": "integer", "minimum": 1, "maximum": 100 }, "pred_len": { "type": "object", "additionalProperties": { "type": "integer" } }, "lookback": { "type": "object", "additionalProperties": { "type": "integer" } } } } } } } } }, "responses": { "200": { "description": "JSON response", "content": { "application/json": { "schema": { "type": "object" } } } }, "402": { "description": "x402 payment challenge. Returned by paid endpoints when no valid payment is provided. The response body contains x402Version and accepts[] with the exact payment requirements (network, asset, amount, payTo, scheme). See /.well-known/x402 for the full manifest.", "content": { "application/json": { "schema": { "type": "object", "properties": { "x402Version": { "type": "integer", "const": 2 }, "accepts": { "type": "array", "items": { "type": "object" } } } } } } }, "429": { "description": "Error response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "503": { "description": "Kronos is disabled", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } } } } } }, "components": { "securitySchemes": { "x402Payment": { "type": "apiKey", "in": "header", "name": "PAYMENT-SIGNATURE", "description": "x402 v2 payment payload. Required for paid endpoints when the service manifest at /.well-known/x402 has enforcement=active_mainnet. Send the signed payment in this header (or the legacy X-PAYMENT header) to satisfy the 402 challenge." } }, "parameters": { "SymbolKey": { "name": "symbolKey", "in": "path", "required": true, "description": "Kronos symbol key — on-demand discovery for any Gate.io symbol (crypto, stocks, forex, metals, commodities, indices). Curated: btc_usdt, eth_usdt, sol_usdt, xrp_usdt, bnb_usdt. On-demand examples: nvda_usdt, xauusd_usdt, eurusd_usdt, doge_usdt. Unknown symbols return 404 with available keys.", "schema": { "type": "string", "pattern": "^[a-z0-9_]+$", "maxLength": 50, "examples": [ "btc_usdt", "eth_usdt", "nvda_usdt", "xauusd_usdt", "eurusd_usdt" ] } }, "SymbolQuery": { "name": "symbol", "in": "query", "required": false, "description": "Filter by Kronos symbol key (e.g. btc_usdt). Same on-demand discovery as path symbolKey.", "schema": { "type": "string", "pattern": "^[a-z0-9_]+$", "maxLength": 50, "example": "btc_usdt" } }, "Limit": { "name": "limit", "in": "query", "required": false, "schema": { "type": "integer", "default": 100, "minimum": 1, "maximum": 1000 } }, "Timeframe": { "name": "tf", "in": "path", "required": true, "schema": { "type": "string", "enum": [ "5m", "15m", "1h", "4h", "1d" ] } }, "Timeframes": { "name": "timeframes", "in": "query", "required": false, "description": "Comma-separated timeframes (5m, 15m, 1h, 4h, 1d). Defaults to all 5 for /predict, 5m for /forecast-distribution.", "schema": { "type": "string", "pattern": "^(5m|15m|1h|4h|1d)(,(5m|15m|1h|4h|1d))*$", "maxLength": 20, "example": "5m,15m,1h,4h,1d" } } }, "schemas": { "PlaygroundRequest": { "type": "object", "properties": { "timeframes": { "type": "array", "items": { "type": "string", "enum": [ "5m", "15m", "1h", "4h", "1d" ] } }, "config": { "type": "object", "properties": { "T": { "type": "number", "minimum": 0, "maximum": 2 }, "top_p": { "type": "number", "minimum": 0, "maximum": 1 }, "sample_count": { "type": "integer", "minimum": 1, "maximum": 100 }, "pred_len": { "type": "object", "additionalProperties": { "type": "integer" } }, "lookback": { "type": "object", "additionalProperties": { "type": "integer" } } } } } }, "Error": { "type": "object", "properties": { "error": { "type": "string" }, "detail": { "type": "string" } } }, "KronosConsensus": { "type": "object", "description": "Aggregate directional reading across the requested timeframes.", "properties": { "direction": { "type": "string", "enum": [ "LONG", "SHORT", "NEUTRAL" ] }, "confidence": { "type": "number", "description": "0-1 agreement strength across timeframes." }, "upside_prob_avg": { "type": "number", "description": "Average upside probability across timeframes (0-100)." }, "total_timeframes": { "type": "integer" }, "agreeing_timeframes": { "type": "integer" } }, "required": [ "direction", "total_timeframes", "agreeing_timeframes" ] }, "KronosForecast": { "type": "object", "description": "Conformal calibrated price range.", "properties": { "low": { "type": "number" }, "high": { "type": "number" }, "coverage": { "type": "number" }, "predicted_at": { "type": "string", "format": "date-time" }, "method": { "type": "string", "enum": [ "dynamic_calibration", "default_widening" ] } }, "required": [ "low", "high", "coverage" ] }, "KronosTimeframeResult": { "type": "object", "properties": { "pred_len": { "type": "integer" }, "pred_max": { "type": "number" }, "pred_min": { "type": "number" }, "direction": { "type": "string", "enum": [ "LONG", "SHORT", "NEUTRAL" ] }, "elapsed_s": { "type": "number" }, "change_pct": { "type": "number" }, "upside_prob": { "type": "number" }, "pred_candles": { "type": "array", "items": { "type": "array", "items": { "type": "number" }, "minItems": 4, "maxItems": 4 } }, "current_price": { "type": "number" }, "predicted_price": { "type": "number" } }, "required": [ "direction", "current_price", "predicted_price" ] }, "KronosSamplePolicy": { "type": "object", "properties": { "symbol": { "type": "string" }, "delay_minutes": { "type": "integer" }, "realtime": { "type": "boolean" } } }, "KronosForecastResponse": { "type": "object", "description": "Kronos forecast response shared by /sample and /predict endpoints.", "properties": { "pair": { "type": "string" }, "timestamp": { "type": "string", "format": "date-time" }, "timeframes": { "type": "object", "additionalProperties": { "$ref": "#/components/schemas/KronosTimeframeResult" } }, "consensus": { "$ref": "#/components/schemas/KronosConsensus" }, "forecast": { "$ref": "#/components/schemas/KronosForecast" }, "sample": { "type": "boolean" }, "sample_policy": { "$ref": "#/components/schemas/KronosSamplePolicy" } }, "required": [ "pair", "timestamp", "timeframes", "consensus" ] } }, "responses": { "Json": { "description": "JSON response", "content": { "application/json": { "schema": { "type": "object" } } } }, "KronosForecast": { "description": "Kronos forecast response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/KronosForecastResponse" } } } }, "Error": { "description": "Error response", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "NotCached": { "description": "No cached signal is available", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "Disabled": { "description": "Kronos is disabled", "content": { "application/json": { "schema": { "$ref": "#/components/schemas/Error" } } } }, "PaymentRequired": { "description": "x402 payment challenge. Returned by paid endpoints when no valid payment is provided. The response body contains x402Version and accepts[] with the exact payment requirements (network, asset, amount, payTo, scheme). See /.well-known/x402 for the full manifest.", "content": { "application/json": { "schema": { "type": "object", "properties": { "x402Version": { "type": "integer", "const": 2 }, "accepts": { "type": "array", "items": { "type": "object" } } } } } } } } } }