GET
/api/v1/markets/{slug}/forecast
Q's forecast for a market
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| slug | path, required | string | Market slug, nativeMarketId, or marketKey |
| venue | query | "polymarket" | "polymarket_us" | "kalshi" | "limitless" | Optional prediction-market venue filter. Omit it on catalog/feed routes to include every covered venue. On legacy slug or condition-ID lookups, omission retains the Polymarket namespace; prefer marketKey for collision-safe cross-venue lookup. |
| history | query | integer | Number of prior forecasts to include for intraforecast diffing (0-10) |
Response fields
| Field | Type | Meaning |
|---|---|---|
| market | CanonicalMarketWithRelationships | |
| market_slug | string | |
| question | string | |
| market_odds | number | |
| end_date | string | |
| quotientUrl | string | |
| polymarketUrl | string | Legacy Polymarket navigation alias. Populated only for Polymarket International rows and null for Polymarket US, Kalshi, and Limitless; use marketUrl for venue-neutral navigation. |
| forecast | ForecastRead | |
| history | ForecastRead[] | Prior forecasts, newest first (per the history param) |
Billing and limits
Calls are billed to prepaid credits, or per call over x402. The price above is the reference price; the 402 challenge returned at request time is what a call actually costs.
One request may be in flight at a time, and request starts must be at least one second apart. A rejected 429 is not billed. See rate limits.
curl
curl -H "x-quotient-api-key: qt_…" \
"https://quotient-api-gateway.onrender.com/api/v1/markets/<slug>/forecast"Run sends this request with preset parameters on Quotient’s demo key. Your credits are not spent.
200 · application/json
{
"market": {
"venue": "polymarket",
"nativeMarketId": "…",
"nativeEventId": "…",
"seriesTicker": "…",
"marketKey": "…",
"slug": "…",
"marketUrl": "…",
"sourceUrl": "…",
"relationships": {
"assets": [
{}
],
"markets": [
{}
],
"signals": [
{}
],
"truncated": {
"assets": false,
"markets": false,
"signals": false
}
}
},
"market_slug": "…",
"question": "…",
"market_odds": 0,
"end_date": "…",
"quotientUrl": "…",
"polymarketUrl": "…",
"forecast": {
"venue": "polymarket",
"market": {
"venue": "polymarket",
"nativeMarketId": "…",
"nativeEventId": "…",
"seriesTicker": "…",
"marketKey": "…",
"slug": "…",
"marketUrl": "…",
"sourceUrl": "…"
},
"id": "…",
"probability": 0,
"created_at": "…",
"headline": "…",
"bluf": "…",
"thesis": "…",
"crux": "…",
"resolution_pathway": {
"criteria": "…",
"crux": "…",
"deadline": "…",
"source": "…"
},
"delta_from_prior": 0,
"delta_reasoning": "…",
"prior_forecast_id": "…",
"refresh_reason": "…",
"refresh_triggered_by": "…",
"conviction_tier": 0,
"draw_std_log_odds": 0,
"draw_count": 0,
"band25": 0,
"band75": 0,
"drawdown_risk_72h": {
"yes": false,
"no": false
},
"crash_risk": {
"yes": false,
"no": false
},
"relationships": {
"assets": [
{}
],
"markets": [
{}
],
"signals": [
{}
],
"truncated": {
"assets": false,
"markets": false,
"signals": false
}
}
},
"history": [
{
"venue": "polymarket",
"market": {
"venue": "polymarket",
"nativeMarketId": "…",
"nativeEventId": "…",
"seriesTicker": "…",
"marketKey": "…",
"slug": "…",
"marketUrl": "…",
"sourceUrl": "…"
},
"id": "…",
"probability": 0,
"created_at": "…",
"headline": "…",
"bluf": "…",
"thesis": "…",
"crux": "…",
"resolution_pathway": {
"criteria": "…",
"crux": "…",
"deadline": "…",
"source": "…"
},
"delta_from_prior": 0,
"delta_reasoning": "…",
"prior_forecast_id": "…",
"refresh_reason": "…",
"refresh_triggered_by": "…",
"conviction_tier": 0,
"draw_std_log_odds": 0,
"draw_count": 0,
"band25": 0,
"band75": 0,
"drawdown_risk_72h": {
"yes": false,
"no": false
},
"crash_risk": {
"yes": false,
"no": false
},
"relationships": {
"assets": [
{}
],
"markets": [
{}
],
"signals": [
{}
],
"truncated": {
"assets": false,
"markets": false,
"signals": false
}
}
}
]
}