### GET /v1/calibration Source: https://api.rekko.ai/openapi.json Signal accuracy and calibration metrics (free, no auth required). ```markdown ### Parameters - **category** (string, query, optional): Filter by category (e.g. 'crypto', 'politics') - **period** (string, query, optional): Time period: '7d', '30d', '90d', or 'all' - **mode** (string, query, optional): Trading mode: 'shadow' or 'live' ### Responses #### 200 - Successful Response #### 422 - Validation Error **HTTPValidationError** - **detail** (array (ValidationError)) Array items: - **loc** (array (union)) (required) - **msg** (string) (required) - **type** (string) (required) - **input** (unknown) - **ctx** (object) ### Example Usage ```bash curl -X GET "https://api.rekko.ai/v1/calibration?category=&period=all&mode=shadow" ``` ``` -------------------------------- ### GET /v1/webhooks Source: https://api.rekko.ai/openapi.json List your registered webhooks. ```markdown ### Responses #### 200 - Successful Response - Array of WebhookInfo ### Example Usage ```bash curl -X GET "https://api.rekko.ai/v1/webhooks" ``` ``` -------------------------------- ### GET /v1/markets/{platform}/{market_id} Source: https://api.rekko.ai/openapi.json Get a single market listing by platform and ID. ```markdown ### Parameters - **platform** (string, path, required) - **market_id** (string, path, required) - **expand** (string, query, optional): Comma-separated expansions ### Responses #### 200 - Successful Response **Market** - **platform** (string) (required): kalshi, polymarket, or robinhood - **market_id** (string) (required): Platform-specific identifier (ticker or numeric ID) - **title** (string) (required): Market question / title - **url** (string): Public URL on the source platform - **category** (string): Market category if known - **yes_price** (number) (required): Current YES price (probability) - **volume_24h** (number): 24h trading volume in USD - **liquidity** (number) - **open_interest** (number) - **resolution_date** (string) - **updated_at** (string (date-time)) (required): When this data was last refreshed #### 422 - Validation Error **HTTPValidationError** - **detail** (array (ValidationError)) Array items: - **loc** (array (union)) (required) - **msg** (string) (required) - **type** (string) (required) - **input** (unknown) - **ctx** (object) ### Example Usage ```bash curl -X GET "https://api.rekko.ai/v1/markets/{platform}/{market_id}?expand=" ``` ``` -------------------------------- ### GET /v1/performance Source: https://api.rekko.ai/openapi.json Win rate, P&L, ROI, and edge metrics. ```markdown ### Parameters - **mode** (string, query, optional): Trading mode: 'shadow' or 'live' ### Responses #### 200 - Successful Response **PerformanceSummary** - **mode** (string) (required): Trading mode: 'shadow' or 'live' - **total_trades** (integer) (required): Total trades executed - **resolved_trades** (integer) (required): Trades with known outcomes - **win_rate** (number) (required): Win rate on resolved trades - **total_pnl** (number) (required): Total P&L in USD - **roi_pct** (number) (required): Return on investment percentage - **avg_edge** (number) (required): Average edge on trades - **max_drawdown** (number) (required): Maximum drawdown in USD - **sharpe_ratio** (number) - **daily_history** (array (PerformanceDay)) Array items: - **date** (string) (required): Date in YYYY-MM-DD format - **pnl** (number) (required): Daily P&L in USD - **cumulative_pnl** (number) (required): Cumulative P&L in USD - **trades** (integer) (required): Number of trades that day - **win_rate** (number) (required): Win rate for the day - **generated_at** (string (date-time)): When this summary was generated #### 422 - Validation Error **HTTPValidationError** - **detail** (array (ValidationError)) Array items: - **loc** (array (union)) (required) - **msg** (string) (required) - **type** (string) (required) - **input** (unknown) - **ctx** (object) ### Example Usage ```bash curl -X GET "https://api.rekko.ai/v1/performance?mode=shadow" ``` ``` -------------------------------- ### GET /v1/arbitrage/live Source: https://api.rekko.ai/openapi.json Run a fresh arbitrage scan (may take 10-30 seconds). ```markdown ### Parameters - **min_spread** (number, query, optional): Minimum spread filter - **expand** (string, query, optional): Comma-separated expansions ### Responses #### 200 - Successful Response **ArbitrageResponse** - **scanned_at** (string (date-time)) (required): Exact scan timestamp - **count** (integer): Number of opportunities - **opportunities** (array (ArbitrageOpportunity)): Opportunities ranked by score (highest first) Array items: - **event** (string) (required): Matched event title - **kalshi** (object) (required): One side of an arbitrage opportunity. (example: {"market_id":"KXFED-26MAR19","url":"https://kalshi.com/markets/kxfed/kxfed-26mar19","yes_price":0.62}) - **market_id** (string) (required): Platform-specific market identifier - **yes_price** (number) (required): YES probability - **url** (string): Market URL - **polymarket** (object) (required): One side of an arbitrage opportunity. (example: {"market_id":"KXFED-26MAR19","url":"https://kalshi.com/markets/kxfed/kxfed-26mar19","yes_price":0.62}) - **spread** (number) (required): Absolute price spread - **spread_pct** (number) (required): Spread as percentage (e.g. 5.0 = 5%) - **cheaper_on** (string) (required): Platform with lower YES price - **score** (number) (required): Composite quality score (0-100) - **match_confidence** (number) (required): Fuzzy title match confidence - **spread_score** (number) - **liquidity_score** (number) - **match_confidence_score** (number) - **execution_score** (number) - **scanned_at** (string (date-time)) (required): When this opportunity was detected #### 422 - Validation Error **HTTPValidationError** - **detail** (array (ValidationError)) Array items: - **loc** (array (union)) (required) - **msg** (string) (required) - **type** (string) (required) - **input** (unknown) - **ctx** (object) ### Example Usage ```bash curl -X GET "https://api.rekko.ai/v1/arbitrage/live?min_spread=0.02&expand=" ``` ``` -------------------------------- ### GET /v1/markets Source: https://api.rekko.ai/openapi.json List current prediction markets with pricing data. ```markdown ### Parameters - **source** (string, query, optional): Filter by platform: 'kalshi' or 'polymarket' - **limit** (integer, query, optional): Maximum markets to return ### Responses #### 200 - Successful Response - Array of Market #### 422 - Validation Error **HTTPValidationError** - **detail** (array (ValidationError)) Array items: - **loc** (array (union)) (required) - **msg** (string) (required) - **type** (string) (required) - **input** (unknown) - **ctx** (object) ### Example Usage ```bash curl -X GET "https://api.rekko.ai/v1/markets?source=&limit=30" ``` ``` -------------------------------- ### GET /v1/arbitrage Source: https://api.rekko.ai/openapi.json Get cached arbitrage opportunities with composite scoring. ```markdown ### Parameters - **min_spread** (number, query, optional): Minimum spread filter - **expand** (string, query, optional): Comma-separated expansions ### Responses #### 200 - Successful Response **ArbitrageResponse** - **scanned_at** (string (date-time)) (required): Exact scan timestamp - **count** (integer): Number of opportunities - **opportunities** (array (ArbitrageOpportunity)): Opportunities ranked by score (highest first) Array items: - **event** (string) (required): Matched event title - **kalshi** (object) (required): One side of an arbitrage opportunity. (example: {"market_id":"KXFED-26MAR19","url":"https://kalshi.com/markets/kxfed/kxfed-26mar19","yes_price":0.62}) - **market_id** (string) (required): Platform-specific market identifier - **yes_price** (number) (required): YES probability - **url** (string): Market URL - **polymarket** (object) (required): One side of an arbitrage opportunity. (example: {"market_id":"KXFED-26MAR19","url":"https://kalshi.com/markets/kxfed/kxfed-26mar19","yes_price":0.62}) - **spread** (number) (required): Absolute price spread - **spread_pct** (number) (required): Spread as percentage (e.g. 5.0 = 5%) - **cheaper_on** (string) (required): Platform with lower YES price - **score** (number) (required): Composite quality score (0-100) - **match_confidence** (number) (required): Fuzzy title match confidence - **spread_score** (number) - **liquidity_score** (number) - **match_confidence_score** (number) - **execution_score** (number) - **scanned_at** (string (date-time)) (required): When this opportunity was detected #### 422 - Validation Error **HTTPValidationError** - **detail** (array (ValidationError)) Array items: - **loc** (array (union)) (required) - **msg** (string) (required) - **type** (string) (required) - **input** (unknown) - **ctx** (object) ### Example Usage ```bash curl -X GET "https://api.rekko.ai/v1/arbitrage?min_spread=0.02&expand=" ``` ``` -------------------------------- ### POST /v1/markets/{platform}/{market_id}/analyze Source: https://api.rekko.ai/openapi.json Start an async analysis for a specific market. Poll the status URL for completion. ```markdown ### Parameters - **platform** (string, path, required) - **market_id** (string, path, required) ### Responses #### 202 - Successful Response **AnalysisStatus** - **analysis_id** (string) (required): Opaque analysis identifier (rk-...) - **status** (string (running|complete|error)) (required): Current status ("running"|"complete"|"error") - **poll_url** (string): URL to poll for status updates - **estimated_seconds** (integer): Estimated time to completion - **error_message** (string) #### 422 - Validation Error **HTTPValidationError** - **detail** (array (ValidationError)) Array items: - **loc** (array (union)) (required) - **msg** (string) (required) - **type** (string) (required) - **input** (unknown) - **ctx** (object) ### Example Usage ```bash curl -X POST "https://api.rekko.ai/v1/markets/{platform}/{market_id}/analyze" ``` ``` -------------------------------- ### GET /v1/markets/{platform}/{market_id}/analysis Source: https://api.rekko.ai/openapi.json Get the latest AI analysis for a market, keyed by platform and market ID. ```markdown ### Parameters - **platform** (string, path, required) - **market_id** (string, path, required) - **expand** (string, query, optional): Comma-separated expansions ### Responses #### 200 - Successful Response **Analysis** - **platform** (string) (required): kalshi, polymarket, or robinhood - **market_id** (string) (required): Platform-specific market identifier - **title** (string) (required): Market question - **probability** (number) (required): Rekko's estimated true probability - **confidence** (number) (required): Confidence in the estimate - **edge** (number): estimated_prob - market_price (positive = underpriced YES) - **recommendation** (string) (required): BUY_YES, BUY_NO, or NO_TRADE - **risk_rating** (string): low, medium, or high - **summary** (string) (required): Executive summary of the analysis - **key_factors** (array (string)): Top probability drivers - **risks** (array (string)): Ways the analysis could be wrong - **source_count** (integer): Number of sources analyzed - **analyzed_at** (string (date-time)): When the analysis was produced - **expires_at** (string (date-time)) - **freshness** (string (fresh|stale|expired)) ("fresh"|"stale"|"expired") - **analysis_type** (string (full|light)) ("full"|"light") - **scenarios** (array (AnalysisScenario)) Array items: - **name** (string) (required): Scenario name, e.g. 'Bull (rate cut)' - **probability** (number) (required): Scenario probability - **description** (string) (required): What happens in this scenario - **trigger** (string): Events that trigger this scenario - **causal** (object): Weighted causal decomposition of a market probability estimate. Breaks a probability estimate into evidence-backed factors with Bayesian prior/posterior updates. (example: {"factors":[{"claim":"Inflation is within Fed's comfort zone","confidence":0.9,"direction":"supports_yes","evidence":["PCE Feb 2026: 2.1%","Core CPI declining 3 months"],"posterior":0.82,"prior":0.6,"weight":0.35},{"claim":"Fed rhetoric is dovish","confidence":0.75,"direction":"supports_yes","evidence":["Waller speech March 12","Bostic: 'open to adjustment'"],"posterior":0.68,"prior":0.5,"weight":0.3},{"claim":"Tariff uncertainty creates headwinds","confidence":0.6,"direction":"supports_no","evidence":["New tariffs announced March 5","Trade deficit widening"],"posterior":0.45,"prior":0.4,"weight":0.2}],"generated_at":"2026-03-21T12:00:00Z","method":"weighted_bayesian","overall_confidence":0.82,"overall_probability":0.71}) - **overall_probability** (number) (required): Aggregated probability from factor weights - **overall_confidence** (number) (required): Weighted confidence across all factors - **factors** (array (CausalFactor)) (required): Causal factors (typically 3-7) Array items: - **claim** (string) (required): The factor statement, e.g. 'Fed will hold rates' - **direction** (string (supports_yes|supports_no|neutral)) (required): Whether this factor pushes toward YES or NO resolution ("supports_yes"|"supports_no"|"neutral") - **weight** (number) (required): Relative importance weight (top-level factors sum to ~1.0) - **confidence** (number) (required): Confidence in this specific factor (0=uncertain, 1=certain) - **prior** (number) (required): Prior probability (base rate) - **posterior** (number) (required): Updated probability after evidence (Bayesian posterior) - **evidence** (array (string)): Key evidence supporting this factor - **method** (string): Aggregation method: weighted_bayesian, linear, log_odds - **generated_at** (string (date-time)): When this decomposition was produced - **meta** (object): Internal metadata about how an analysis was produced (opt-in via ?expand=meta). (example: {"duration_ms":42300,"edge_assessment":"Market at 62c implies 62% probability. Our 71% estimate gives +9c edge — significant at this confidence level.","models_used":["gemini-3.1-pro-preview","claude-sonnet-4-5"],"what_would_change_mind":["CPI surprise above 2.5%","Strong employment report (NFP > 250K)","Hawkish Fed minutes release"]}) - **what_would_change_mind** (array (string)): Events that would change the recommendation - **edge_assessment** (string): Market edge analysis - **models_used** (array (string)): Models used in the pipeline - **duration_ms** (integer): How long the analysis took #### 422 - Validation Error **HTTPValidationError** - **detail** (array (ValidationError)) Array items: - **loc** (array (union)) (required) - **msg** (string) (required) - **type** (string) (required) - **input** (unknown) - **ctx** (object) ### Example Usage ```bash curl -X GET "https://api.rekko.ai/v1/markets/{platform}/{market_id}/analysis?expand=" ``` ``` -------------------------------- ### GET /v1/analyses Source: https://api.rekko.ai/openapi.json List recent analysis summaries, keyed by market. ```markdown ### Parameters - **limit** (integer, query, optional): Maximum analyses to return ### Responses #### 200 - Successful Response - Array of AnalysisSummary #### 422 - Validation Error **HTTPValidationError** - **detail** (array (ValidationError)) Array items: - **loc** (array (union)) (required) - **msg** (string) (required) - **type** (string) (required) - **input** (unknown) - **ctx** (object) ### Example Usage ```bash curl -X GET "https://api.rekko.ai/v1/analyses?limit=20" ``` ``` -------------------------------- ### GET /v1/markets/{platform}/{market_id}/history Source: https://api.rekko.ai/openapi.json Get historical price and volume data for backtesting. ```markdown ### Parameters - **platform** (string, path, required) - **market_id** (string, path, required) - **period** (string, query, optional): Time period: '48h', '7d', or '30d' - **max_points** (integer, query, optional): Maximum data points to return ### Responses #### 200 - Successful Response #### 422 - Validation Error **HTTPValidationError** - **detail** (array (ValidationError)) Array items: - **loc** (array (union)) (required) - **msg** (string) (required) - **type** (string) (required) - **input** (unknown) - **ctx** (object) ### Example Usage ```bash curl -X GET "https://api.rekko.ai/v1/markets/{platform}/{market_id}/history?period=7d&max_points=48" ``` ``` -------------------------------- ### GET /v1/pricing Source: https://api.rekko.ai/openapi.json Return tier pricing for all feed endpoints (no auth required). ```markdown ### Responses #### 200 - Successful Response ### Example Usage ```bash curl -X GET "https://api.rekko.ai/v1/pricing" ``` ``` -------------------------------- ### GET /v1/health Source: https://api.rekko.ai/openapi.json Health check with data freshness metrics. ```markdown ### Responses #### 200 - Successful Response ### Example Usage ```bash curl -X GET "https://api.rekko.ai/v1/health" ``` ``` -------------------------------- ### GET /v1/stream Source: https://api.rekko.ai/openapi.json Server-Sent Events stream for real-time market signals. ```markdown ### Parameters - **events** (string, query, optional): Comma-separated event types: price_shift, whale_alert, analysis_complete ### Responses #### 200 - Successful Response #### 422 - Validation Error **HTTPValidationError** - **detail** (array (ValidationError)) Array items: - **loc** (array (union)) (required) - **msg** (string) (required) - **type** (string) (required) - **input** (unknown) - **ctx** (object) ### Example Usage ```bash curl -X GET "https://api.rekko.ai/v1/stream?events=" ``` ``` -------------------------------- ### GET /v1/markets/{platform}/{market_id}/consensus Source: https://api.rekko.ai/openapi.json Get consensus probability from aggregated agent trades. ```markdown ### Parameters - **platform** (string, path, required) - **market_id** (string, path, required) - **period** (string, query, optional): Lookback: '24h', '7d', '30d' ### Responses #### 200 - Successful Response **ConsensusView** - **market_id** (string) (required): Market identifier - **platform** (string): Platform - **consensus_probability** (number) - **sample_size** (integer): Number of agent trades - **unique_agents** (integer): Distinct agents who traded - **rekko_probability** (number) - **divergence** (number) - **divergence_signal** (string): 'crowd_agrees', 'crowd_disagrees', 'strong_divergence', 'neutral', or 'insufficient_data' - **yes_volume_usd** (number): Total YES volume - **no_volume_usd** (number): Total NO volume - **yes_trade_count** (integer): YES trade count - **no_trade_count** (integer): NO trade count - **period** (string): Lookback period - **generated_at** (string (date-time)) #### 422 - Validation Error **HTTPValidationError** - **detail** (array (ValidationError)) Array items: - **loc** (array (union)) (required) - **msg** (string) (required) - **type** (string) (required) - **input** (unknown) - **ctx** (object) ### Example Usage ```bash curl -X GET "https://api.rekko.ai/v1/markets/{platform}/{market_id}/consensus?period=7d" ``` ``` -------------------------------- ### GET /v1/markets/{platform}/{market_id}/resolution Source: https://api.rekko.ai/openapi.json Resolution timing, mechanism, and time-value analysis. ```markdown ### Parameters - **platform** (string, path, required) - **market_id** (string, path, required) ### Responses #### 200 - Successful Response **ResolutionIntelligence** - **market_id** (string) (required): Market identifier - **platform** (string) (required): kalshi, polymarket, or robinhood - **title** (string): Market title - **status** (string): Market status: 'active', 'closed', 'determined', 'finalized' - **expiration_date** (string (date-time)) - **close_date** (string (date-time)) - **hours_to_expiration** (number) - **resolution_mechanism** (string): How this market resolves: 'scheduled_data_release', 'event_outcome', 'date_based', 'continuous_monitoring', 'unknown' - **rules_summary** (string): Resolution rules from the platform - **time_urgency** (string): Time urgency: 'critical' (<24h), 'high' (1-3d), 'medium' (3-14d), 'low' (>14d) - **theta_estimate** (number) - **key_dates** (array (KeyDate)): Significant upcoming dates Array items: - **date** (string (date-time)) (required): The key date - **label** (string) (required): What happens on this date - **impact** (string): Expected impact: 'high', 'medium', 'low' - **recurring_schedule** (string) - **generated_at** (string (date-time)): When this intelligence was generated #### 422 - Validation Error **HTTPValidationError** - **detail** (array (ValidationError)) Array items: - **loc** (array (union)) (required) - **msg** (string) (required) - **type** (string) (required) - **input** (unknown) - **ctx** (object) ### Example Usage ```bash curl -X GET "https://api.rekko.ai/v1/markets/{platform}/{market_id}/resolution" ``` ``` -------------------------------- ### GET /v1/markets/{platform}/{market_id}/analyze/{analysis_id}/status Source: https://api.rekko.ai/openapi.json Check the status of an async analysis. ```markdown ### Parameters - **platform** (string, path, required) - **market_id** (string, path, required) - **analysis_id** (string, path, required) ### Responses #### 200 - Successful Response **AnalysisStatus** - **analysis_id** (string) (required): Opaque analysis identifier (rk-...) - **status** (string (running|complete|error)) (required): Current status ("running"|"complete"|"error") - **poll_url** (string): URL to poll for status updates - **estimated_seconds** (integer): Estimated time to completion - **error_message** (string) #### 422 - Validation Error **HTTPValidationError** - **detail** (array (ValidationError)) Array items: - **loc** (array (union)) (required) - **msg** (string) (required) - **type** (string) (required) - **input** (unknown) - **ctx** (object) ### Example Usage ```bash curl -X GET "https://api.rekko.ai/v1/markets/{platform}/{market_id}/analyze/{analysis_id}/status" ``` ``` -------------------------------- ### GET /v1/markets/{platform}/{market_id}/execution Source: https://api.rekko.ai/openapi.json Optimal trade execution analysis from bid/ask spread patterns. ```markdown ### Parameters - **platform** (string, path, required) - **market_id** (string, path, required) ### Responses #### 200 - Successful Response **ExecutionGuidance** - **market_id** (string) (required): Market identifier - **platform** (string) (required): kalshi, polymarket, or robinhood - **title** (string): Market title - **current_bid** (number) - **current_ask** (number) - **current_spread** (number) - **avg_spread_48h** (number) - **spread_percentile** (number) - **spread_trend** (string): Spread direction: 'tightening', 'widening', or 'stable' - **liquidity_score** (integer): Liquidity quality 0-100 based on spread + volume - **estimated_slippage_pct** (number): Estimated slippage as percentage of price - **recommendation** (string): LIMIT_ORDER, MARKET_ORDER, or WAIT - **suggested_limit_price** (number) - **rationale** (string): Explanation of the recommendation - **upcoming_event** (string) - **hours_to_event** (number) - **tick_count** (integer): Number of ticks analyzed - **generated_at** (string (date-time)): When this guidance was generated #### 422 - Validation Error **HTTPValidationError** - **detail** (array (ValidationError)) Array items: - **loc** (array (union)) (required) - **msg** (string) (required) - **type** (string) (required) - **input** (unknown) - **ctx** (object) ### Example Usage ```bash curl -X GET "https://api.rekko.ai/v1/markets/{platform}/{market_id}/execution" ``` ``` -------------------------------- ### GET /health Source: https://api.rekko.ai/openapi.json API endpoint for GET /health ```markdown ### Responses #### 200 - Successful Response ### Example Usage ```bash curl -X GET "https://api.rekko.ai/health" ``` ``` -------------------------------- ### POST /v1/screen Source: https://api.rekko.ai/openapi.json Batch screen markets with lightweight scoring (no LLM pipeline). ```markdown ### Request Body **Content-Type:** application/json - **market_ids** (array (string)): Specific market IDs to screen (if empty, lists markets with filters) - **platform** (string): Filter by platform: 'kalshi', 'polymarket', or 'robinhood' - **min_volume_24h** (number): Minimum 24h volume in USD - **min_score** (number): Minimum quick_score filter - **limit** (integer): Maximum results ### Responses #### 200 - Successful Response - Array of ScreenResult #### 422 - Validation Error **HTTPValidationError** - **detail** (array (ValidationError)) Array items: - **loc** (array (union)) (required) - **msg** (string) (required) - **type** (string) (required) - **input** (unknown) - **ctx** (object) ### Example Usage ```bash curl -X POST "https://api.rekko.ai/v1/screen" \ -H "Content-Type: application/json" \ -d '{ "limit": 20, "min_score": 0.5, "min_volume_24h": 50000, "platform": "kalshi" }' ``` ``` -------------------------------- ### POST /v1/signals/portfolio Source: https://api.rekko.ai/openapi.json Portfolio-aware strategy signal with correlation analysis and hedge recommendations. ```markdown ### Request Body **Content-Type:** application/json - **market_query** (string) (required): Market question to analyze - **portfolio** (array (PortfolioPosition)): Current portfolio positions Array items: - **platform** (string) (required): kalshi, polymarket, or robinhood - **market_id** (string) (required): Market identifier - **side** (string) (required): 'yes' or 'no' - **size_usd** (number) (required): Position size in USD - **entry_price** (number): Entry price - **bankroll_usd** (number): Total bankroll in USD - **max_position_pct** (number): Max single position as fraction of bankroll ### Responses #### 200 - Successful Response **PortfolioSignal** - **platform** (string) (required): kalshi, polymarket, or robinhood - **market_id** (string) (required): Market identifier - **title** (string) (required): Market question - **recommendation** (string) (required): BUY_YES, BUY_NO, NO_TRADE - **target_price** (number) (required): Suggested entry price - **edge** (number) (required): estimated_prob - market_price - **confidence** (number) (required): Confidence in the signal - **risk_rating** (string) (required): low, medium, high - **base_size_pct** (number) (required): Kelly-derived size before portfolio adjustment - **adjusted_size_pct** (number) (required): Size after portfolio correlation adjustment - **adjusted_size_usd** (number) (required): Dollar amount based on adjusted_size_pct * bankroll - **portfolio_impact** (object) (required): How a new trade would affect the portfolio. (example: {"concentration_delta":0.15,"correlated_with":"KXCPI-26MAR","max_correlation":0.73,"net_exposure_change":350,"portfolio_risk_level":"medium"}) - **max_correlation** (number) (required): Highest correlation between new market and any existing position - **correlated_with** (string): Most correlated existing position - **concentration_delta** (number) (required): Change in portfolio concentration (positive = more concentrated) - **net_exposure_change** (number) (required): Net directional exposure change in USD - **portfolio_risk_level** (string): 'low', 'medium', 'high' - **hedge_recommendations** (array (HedgeRecommendation)): Suggested hedges to reduce portfolio risk Array items: - **market_id** (string) (required): Market to trade for hedging - **platform** (string) (required): Platform - **title** (string): Market title - **side** (string) (required): 'yes' or 'no' — the hedge side - **suggested_size_usd** (number) (required): Suggested hedge size - **rationale** (string) (required): Why this hedge reduces risk - **generated_at** (string (date-time)): When this signal was produced - **expires_at** (string (date-time)) (required): Signal staleness window #### 422 - Validation Error **HTTPValidationError** - **detail** (array (ValidationError)) Array items: - **loc** (array (union)) (required) - **msg** (string) (required) - **type** (string) (required) - **input** (unknown) - **ctx** (object) ### Example Usage ```bash curl -X POST "https://api.rekko.ai/v1/signals/portfolio" \ -H "Content-Type: application/json" \ -d '{ "bankroll_usd": 10000, "market_query": "Will the Fed cut rates at the March 2026 meeting?", "max_position_pct": 0.05, "portfolio": [ { "entry_price": 0.55, "market_id": "KXCPI-26MAR", "platform": "kalshi", "side": "yes", "size_usd": 250 } ] }' ``` ``` -------------------------------- ### POST /v1/webhooks Source: https://api.rekko.ai/openapi.json Register a webhook for real-time event notifications. ```markdown ### Request Body **Content-Type:** application/json - **url** (string) (required): HTTPS URL to receive webhook POST requests - **events** (array (string)) (required): Event types: 'price_shift', 'whale_alert', 'analysis_complete' - **secret** (string): HMAC-SHA256 secret for payload verification ### Responses #### 200 - Successful Response **WebhookInfo** - **webhook_id** (string) (required): Unique webhook identifier - **url** (string) (required): Destination URL - **events** (array (string)) (required): Subscribed event types - **enabled** (boolean): Whether active - **failure_count** (integer): Consecutive delivery failures - **created_at** (string (date-time)) (required): When registered #### 422 - Validation Error **HTTPValidationError** - **detail** (array (ValidationError)) Array items: - **loc** (array (union)) (required) - **msg** (string) (required) - **type** (string) (required) - **input** (unknown) - **ctx** (object) ### Example Usage ```bash curl -X POST "https://api.rekko.ai/v1/webhooks" \ -H "Content-Type: application/json" \ -d '{ "events": [ "whale_alert", "analysis_complete" ], "secret": "whsec_abc123def456", "url": "https://my-agent.example.com/webhooks/rekko" }' ``` ``` -------------------------------- ### POST /v1/signals Source: https://api.rekko.ai/openapi.json Generate an actionable strategy signal for a market. Default: returns 202 with analysis_id for polling. With ?wait=true: blocks until pipeline completes (30-90 seconds). If a cached analysis exists (<24h): returns immediately. Use "force": true to bypass cache. ```markdown ### Parameters - **wait** (boolean, query, optional): Block until analysis completes (up to 5 min) - **expand** (string, query, optional): Comma-separated expansions ### Request Body **Content-Type:** application/json - **platform** (string): Filter by platform: 'kalshi', 'polymarket', or 'robinhood' - **market_id** (string): Platform-specific market identifier - **market_query** (string): Free-text market question (used if market_id not provided) - **force** (boolean): Force fresh analysis even if a cached result exists ### Responses #### 200 - Successful Response **Signal** - **platform** (string) (required): kalshi, polymarket, or robinhood - **market_id** (string) (required): Platform-specific market identifier - **title** (string) (required): Market question - **recommendation** (string (BUY_YES|BUY_NO|NO_TRADE)) (required): Actionable recommendation ("BUY_YES"|"BUY_NO"|"NO_TRADE") - **target_price** (number) (required): Suggested entry price (0.0-1.0) - **edge** (number) (required): estimated_prob - market_price (positive = underpriced YES) - **confidence** (number) (required): Confidence in the signal - **risk_rating** (string (low|medium|high)) (required): Overall risk assessment ("low"|"medium"|"high") - **size_pct** (number) (required): Kelly-derived position size as fraction of bankroll - **time_horizon** (string) (required): Expected resolution: 'hours', 'days', 'weeks' - **hedge** (string) - **causal** (object): Weighted causal decomposition of a market probability estimate. Breaks a probability estimate into evidence-backed factors with Bayesian prior/posterior updates. (example: {"factors":[{"claim":"Inflation is within Fed's comfort zone","confidence":0.9,"direction":"supports_yes","evidence":["PCE Feb 2026: 2.1%","Core CPI declining 3 months"],"posterior":0.82,"prior":0.6,"weight":0.35},{"claim":"Fed rhetoric is dovish","confidence":0.75,"direction":"supports_yes","evidence":["Waller speech March 12","Bostic: 'open to adjustment'"],"posterior":0.68,"prior":0.5,"weight":0.3},{"claim":"Tariff uncertainty creates headwinds","confidence":0.6,"direction":"supports_no","evidence":["New tariffs announced March 5","Trade deficit widening"],"posterior":0.45,"prior":0.4,"weight":0.2}],"generated_at":"2026-03-21T12:00:00Z","method":"weighted_bayesian","overall_confidence":0.82,"overall_probability":0.71}) - **overall_probability** (number) (required): Aggregated probability from factor weights - **overall_confidence** (number) (required): Weighted confidence across all factors - **factors** (array (CausalFactor)) (required): Causal factors (typically 3-7) Array items: - **claim** (string) (required): The factor statement, e.g. 'Fed will hold rates' - **direction** (string (supports_yes|supports_no|neutral)) (required): Whether this factor pushes toward YES or NO resolution ("supports_yes"|"supports_no"|"neutral") - **weight** (number) (required): Relative importance weight (top-level factors sum to ~1.0) - **confidence** (number) (required): Confidence in this specific factor (0=uncertain, 1=certain) - **prior** (number) (required): Prior probability (base rate) - **posterior** (number) (required): Updated probability after evidence (Bayesian posterior) - **evidence** (array (string)): Key evidence supporting this factor - **method** (string): Aggregation method: weighted_bayesian, linear, log_odds - **generated_at** (string (date-time)): When this decomposition was produced - **freshness** (string (fresh|stale|expired)) ("fresh"|"stale"|"expired") - **generated_at** (string (date-time)): When this signal was produced - **expires_at** (string (date-time)) (required): Signal staleness window — do not trade after this time #### 422 - Validation Error **HTTPValidationError** - **detail** (array (ValidationError)) Array items: - **loc** (array (union)) (required) - **msg** (string) (required) - **type** (string) (required) - **input** (unknown) - **ctx** (object) ### Example Usage ```bash curl -X POST "https://api.rekko.ai/v1/signals?wait=false&expand=" \ -H "Content-Type: application/json" \ -d '{ "force": false, "market_id": "KXFED-26MAR19", "market_query": "", "platform": "kalshi" }' ``` ``` -------------------------------- ### Schema: AnalysisSummary Source: https://api.rekko.ai/openapi.json Compact analysis entry for list endpoints. ```markdown ## Schema: AnalysisSummary Compact analysis entry for list endpoints. **Type:** object - **platform** (string) (required): kalshi, polymarket, or robinhood - **market_id** (string) (required): Platform-specific market identifier - **title** (string) (required): Market question - **probability** (number) (required): Estimated probability - **confidence** (number) (required): Confidence level - **recommendation** (string) (required): BUY_YES, BUY_NO, or NO_TRADE - **analyzed_at** (string (date-time)) (required): When analyzed - **freshness** (string (fresh|stale|expired)) ("fresh"|"stale"|"expired") - **analysis_type** (string (full|light)) ("full"|"light") ``` -------------------------------- ### Schema: AnalysisScenario Source: https://api.rekko.ai/openapi.json A scenario assessment (bull/base/bear). ```markdown ## Schema: AnalysisScenario A scenario assessment (bull/base/bear). **Type:** object - **name** (string) (required): Scenario name, e.g. 'Bull (rate cut)' - **probability** (number) (required): Scenario probability - **description** (string) (required): What happens in this scenario - **trigger** (string): Events that trigger this scenario ``` -------------------------------- ### Schema: WebhookRegistration Source: https://api.rekko.ai/openapi.json Request to register a webhook. ```markdown ## Schema: WebhookRegistration Request to register a webhook. **Type:** object - **url** (string) (required): HTTPS URL to receive webhook POST requests - **events** (array (string)) (required): Event types: 'price_shift', 'whale_alert', 'analysis_complete' - **secret** (string): HMAC-SHA256 secret for payload verification ``` -------------------------------- ### Schema: PerformanceSummary Source: https://api.rekko.ai/openapi.json Track record summary from shadow or live trading. ```markdown ## Schema: PerformanceSummary Track record summary from shadow or live trading. **Type:** object - **mode** (string) (required): Trading mode: 'shadow' or 'live' - **total_trades** (integer) (required): Total trades executed - **resolved_trades** (integer) (required): Trades with known outcomes - **win_rate** (number) (required): Win rate on resolved trades - **total_pnl** (number) (required): Total P&L in USD - **roi_pct** (number) (required): Return on investment percentage - **avg_edge** (number) (required): Average edge on trades - **max_drawdown** (number) (required): Maximum drawdown in USD - **sharpe_ratio** (number) - **daily_history** (array (PerformanceDay)) Array items: - **date** (string) (required): Date in YYYY-MM-DD format - **pnl** (number) (required): Daily P&L in USD - **cumulative_pnl** (number) (required): Cumulative P&L in USD - **trades** (integer) (required): Number of trades that day - **win_rate** (number) (required): Win rate for the day - **generated_at** (string (date-time)): When this summary was generated ```