# Quotient API Prediction-market forecasts, published signals, evidence, asset price outlooks, and wallet portfolio context. ## Documentation - /openapi.json: canonical schemas, parameters, response statuses, prices, and rate limits - /docs: API reference - /skill/skill.md: agent command routing and result interpretation - /skill/references/api-reference.md: generated endpoint reference - /skill/references/assets.md: Asset identities, coverage summaries, and linked markets - /skill/references/perps-signals.md: price outlooks, horizons, and settlement sources - /skill/references/writing-style.md: neutral factual documentation and output - /skill/references/payments-policy.md: payment limits and authorization - /skill/references/error-handling.md: errors and retry behavior - /skill/manifest.json: documentation versions and SHA-256 source hashes ## Access Use the Quotient CLI (npm install --global quotient-forecasting; quotient setup), REST, or optional MCP. Runtime requests use https://quotient-api-gateway.onrender.com. API keys use x-quotient-api-key; x402 uses PAYMENT-REQUIRED, PAYMENT-SIGNATURE, and PAYMENT-RESPONSE. Keep API keys in secret storage. Payment and execution require explicit user authorization. Use one operation for each request and retain successful results. Read resource documentation when a contract detail or setup issue requires it. Honor Retry-After, RateLimit-Policy, RateLimit, and X-Quotient-Max-Concurrent. ## Data Markets use polymarket, polymarket_us, kalshi, or hl_outcomes venue identities. hl_outcomes (HL Outcomes) carries covered sports game-winner markets only, and its marketKeys contain # (percent-encode as %23). Covered sports game-winner markets on every venue are forecast on Quotient's sports schedule and take no forecast requests. Prefer marketKey for routing. market_odds is the source venue's YES probability and matches venue_quote.selected_probability. List the sports markets Quotient forecasts with GET /api/v1/markets?topic=sports, narrowed with &league= (atp, wta, cfb, nfl, mlb, wnba, nba, nhl, mls, epl, pga, dpwt, lpga, f1) or &venue=kalshi|polymarket|hl_outcomes. Read one market's forecast with GET /api/v1/markets/{marketKey}/forecast?venue=. Every market read carries a sports block on a sports market, and every probability on that row (Q's forecast, the venue price, the spread) is for its sports.yes_side team or player; the title and outcome order follow the venue and do not identify that side. Forecasts start up to 7 days before kickoff and stop at kickoff; a game is listed once its first forecast is written. A game that carries a signal is also on GET /api/v1/signals, where pick_label names the team or player Q picked. Its markets[] lists every graph-linked venue contract without a primary or preferred venue. Use each listing's signal_side and quote; pick.probability is for the picked team. Assets identify underlying entities. Text Asset searches return market_summary and empty linked_markets; exact reference lookups return active direct HAS_MARKET links other than price markets; an Asset's price view is its price outlook. Forecast probabilities and nullable theses describe the same selected forecast version. Published signals have separate publication records with is_active and retired_reason. A sports signal is one published game-level pick with all venue listings in markets[], without a preferred venue. Other signals name one market. Published signals are held to settlement. Quotient publishes within 7 days of resolution, or up to 14 days for non-sports event favorites priced at 50¢ to under 70¢ with a gap of 10 to under 30 points. The side Q favors must cost under 70¢, and the gap between Q and that price falls inside the range set for the market's category. Sports games and commodity price markets carry signals; crypto and equity price markets do not. A signal published under this rule has rule_version set, its category, its entry price and gap, and similar_trades, the record of past signals like it. The default list rechecks the current category, price, edge and deadline, and excludes legacy and adverse signals; entry_eligible and entry_status carry that read on every signal and sports listing, and an open signal that fails it is ineligible (ask for status=ineligible) until the market returns to the entry window. Forecast age alone does not remove an open signal; is_fresh reports forecast freshness separately. in_play turns true once a game starts or the market passes resolves_at: the signal is still open but no longer an entry, so the default list leaves it out (ask for status=in_play). On an in-play signal the entry price and Q's last read before the start stay; current_cost_cents still follows the market, and the fields that compare Q with the current price (forecast_status, distance_to_convergence_cents, converge_upside_pct, max_roi_pct) are null. Price markets are listed and forecast like any other market. Most price outlooks are under review, and Quotient is neutral on them; the rest are forecast as usual. Price markets are crypto, equity and commodity price thresholds, strike ladders and price-by-date questions. Quotient forecasts the ones that meet its volume and liquidity criteria, on every asset, and every read lists and serves them like any other market, with q_coverage forecasting. Each outlook series and asset stance says whether it is under review with price_review: a block {state: under_review, stance: neutral, message} on one under review and null on one forecast as usual; it is null on every market. Under review, an outlook series reads neutral with no median, bands, levels or price_signals, and an asset stance reads neutral. Treat a price_review block as no position: close anything opened on Quotient's earlier call. Q coverage: every market object and every price outlook series carries q_coverage, what Quotient offers on it, in exactly one state. forecasting: Q's probability, supporting research, and evidence of a forecasting edge (event-outcome markets and price markets). experimental: Q's probability and supporting research with no established forecasting edge; live, but not yet proven (covered sports markets and every price outlook not under review). research_only: research and the market price without a Q probability (reserved; no market is research-only yet). under_review: forecasting paused while Quotient assesses or improves it (most price outlooks today; price_review carries the detail). Name the state when you present an experimental or under_review item, use experimental probabilities with caution, and send anything that looks wrong to jordan@quotient.social. q_coverage describes Q, not the trade: volatility, liquidity and time to resolution are separate risks. Price outlooks preserve every horizon and settlement-source basis_groups. is_primary_horizon identifies the nearest still-open horizon, including neutral. directional_take describes the full curve; price_signals contains current execution publications. Portfolio reports cover wallet-addressed Polymarket, Polymarket perps, and Hyperliquid positions with per-venue availability. Performance reports contain resolved and projected cohorts with mean_per_market and one_random_per_market samples. Preserve dates, sample sizes, and the projected label. ## Operations - GET /api/public/performance: Forecast performance - GET /api/public/forecast-availability: Check forecast availability - GET /api/public/forecast-targets: Resolve forecast targets - POST /api/auth/forecast-requests: Request a forecast - GET /api/auth/forecast-requests/{jobId}: Get forecast request status - GET /api/v1/assets: List assets - GET /api/v1/assets/search: Search assets - GET /api/v1/markets: List markets tracked by Q - GET /api/v1/markets/search: Search markets - GET /api/v1/markets/mispriced: Find forecast-price gaps - GET /api/v1/markets/lookup: Look up markets - GET /api/v1/markets/{slug}/intelligence: Get market intelligence - GET /api/v1/markets/{slug}/signals: Get market article evidence - GET /api/v1/signals: List trade signals - GET /api/v1/signals/featured: Get the featured signal - GET /api/v1/price-outlooks: Get asset price outlooks - GET /api/v1/signals/perps: Get price outlooks (deprecated) - GET /api/v1/assets/stance: Get an asset stance (experimental) - GET /api/v1/portfolio: Get portfolio context - GET /api/v1/markets/{slug}/forecast: Get a market forecast - GET /api/v1/sources: List market sources - POST /api/v1/x/search: Research X - POST /api/v1/x/profile: Profile an X account - GET /api/v1/latest: List recent updates - GET /api/v1/wallets/link: Link a wallet with x402