GET

/api/auth/forecast-requests/{jobId}

Check the status of your forecast request

Read a forecast request you submitted. Use view=status while polling: it returns the durable job state and forecast IDs without expanding forecast results or graph relationships. The default view=result remains backward compatible and includes the published forecast after success. Non-terminal responses include Retry-After. Reading either view is free — you already paid for generation. You can only see requests submitted with your own API key: an unknown jobId and another account's jobId intentionally return the same 404.

Auth x-quotient-api-key

Parameters

NameInTypeDescription
jobIdpath, requiredstring

Format: uuid

viewquery"status" | "result"Use status for lightweight polling. Use result, or omit this parameter, to include the published forecast after success.

Default: "result"

Responses

200: Owner-scoped forecast request status/result
FieldTypeDescription
jobId
required
string

Format: uuid

status
required
"accepted" | "submitted" | "running" | "succeeded" | "rejected" | "failed"
createdAt
required
string

Format: date-time

updatedAt
required
string

Format: date-time

forecastIds
required
string[]
forecasts
required
ForecastRequestForecast[]Published forecast outputs. Empty while pending or when execution fails.
forecasts fields
FieldTypeDescription
id
required
string
question
required
string | null
probability
required
numberQuotient YES probability on a 0-1 scale.

Minimum: 0; Maximum: 1

createdAt
required
string

Format: date-time

headline
required
string | null
bluf
required
string | null
thesis
required
string | null
reasoningSummary
required
string | null
citationCount
required
integer

Minimum: 0

relationships
required
RelationshipsEnvelopeBounded, non-recursive graph references. Each category publishes at most 50 lightweight refs. These refs contain no forecast probability, venue odds, aggregate asset probability, or inferred causal AFFECTS edge.
relationships fields
FieldTypeDescription
assets
required
RelationshipAssetRef[]

Maximum items: 50

assets fields
FieldTypeDescription
relationship
required
"HAS_MARKET" | "ON_MARKET" | "ON_FORECAST" | "HAS_SIGNAL"Exact graph edge at the final hop. The API does not synthesize AFFECTS relationships.
direction
required
"incoming" | "outgoing"Direction of the final graph edge relative to the response subject for direct refs, or relative to the explicit via node for two-hop refs.
via
required
"direct" | "market" | "asset"direct is one graph hop; market or asset names the explicit intermediate node for a bounded two-hop ref.
id
required
string

Format: uuid

assetKey
required
string
name
required
string
ticker
required
string | null
asset_type
required
string
markets
required
RelationshipMarketRef[]

Maximum items: 50

markets fields
FieldTypeDescription
relationship
required
"HAS_MARKET" | "ON_MARKET" | "ON_FORECAST" | "HAS_SIGNAL"Exact graph edge at the final hop. The API does not synthesize AFFECTS relationships.
direction
required
"incoming" | "outgoing"Direction of the final graph edge relative to the response subject for direct refs, or relative to the explicit via node for two-hop refs.
via
required
"direct" | "market" | "asset"direct is one graph hop; market or asset names the explicit intermediate node for a bounded two-hop ref.
marketKey
required
string
venue
required
"polymarket" | "polymarket_us" | "kalshi" | "limitless"Prediction-market venue key: polymarket (Polymarket International), polymarket_us (Polymarket US), kalshi, or limitless.
nativeMarketId
required
string
question
required
string | null
signals
required
RelationshipSignalRef[]

Maximum items: 50

signals fields
FieldTypeDescription
relationship
required
"HAS_MARKET" | "ON_MARKET" | "ON_FORECAST" | "HAS_SIGNAL"Exact graph edge at the final hop. The API does not synthesize AFFECTS relationships.
direction
required
"incoming" | "outgoing"Direction of the final graph edge relative to the response subject for direct refs, or relative to the explicit via node for two-hop refs.
via
required
"direct" | "market" | "asset"direct is one graph hop; market or asset names the explicit intermediate node for a bounded two-hop ref.
id
required
string
signal_type
required
"prediction_market"
canonical_endpoint
required
"/api/v1/signals"
side
required
string | null
published_at
required
string | null
truncated
required
object
truncated fields
FieldTypeDescription
assets
required
boolean
markets
required
boolean
signals
required
boolean
errorCode
required
string | null
listing
required
CanonicalMarketRouting | null
listing fields
FieldTypeDescription
venue
required
"polymarket" | "polymarket_us" | "kalshi" | "limitless"Prediction-market venue key: polymarket (Polymarket International), polymarket_us (Polymarket US), kalshi, or limitless.
nativeMarketId
required
string
nativeEventId
required
string | null
seriesTicker
required
string | null
marketKey
required
string
quotientMarketId
required
stringStable Quotient market-page id: bare numeric for legacy Polymarket rows, venue-prefixed (kalshi:TICKER, polymarket_us:123, …) elsewhere. quotientUrl is exactly https://quotient.social/markets/{quotientMarketId} (URL-encoded) — the id form the market page resolves for every venue. A market with no Quotient coverage yet may not have a page.
slug
required
string | null
marketUrl
required
string | nullConnector-owned market page URL; null when unavailable.

Format: uri

sourceUrl
required
string | nullConnector provenance or API source URL.

Format: uri

broker_channels
required
"robinhood"[]Retail brokers that carry this exact venue contract (same order book, same settlement). A broker distributes the venue contract; venue and marketKey remain the contract's identity. Today only robinhood, stamped on Kalshi rows from Robinhood's public listings; empty when no broker lists the market. Filter with topic=robinhood on /markets, /markets/mispriced and /signals, or tag=robinhood on /markets/search.
robinhood_category
required
string | nullRobinhood's own category slug for the listing (economics, politics, crypto, climate, …); null when not listed on Robinhood.
robinhood_url
required
string | nullDeep link to the Robinhood event page; null when not listed on Robinhood.

Format: uri

401: Invalid or missing Quotient API key
403: Account lacks an active Quotient API entitlement
404: Unknown or not owned

Set QUOTIENT_API_KEY in your shell and replace example identifiers with returned IDs before running a request.

curl
curl --request GET \
  --header "x-quotient-api-key: $QUOTIENT_API_KEY" \
  'https://quotient-api-gateway.onrender.com/api/auth/forecast-requests/example-jobId'
200 · application/json
{
  "jobId": "example",
  "status": "accepted",
  "createdAt": "2027-01-01T00:00:00Z",
  "updatedAt": "2027-01-01T00:00:00Z",
  "forecastIds": [
    "example"
  ],
  "forecasts": [
    {
      "id": "example",
      "question": "example",
      "probability": 0,
      "createdAt": "2027-01-01T00:00:00Z",
      "headline": "example",
      "bluf": "example",
      "thesis": "example",
      "reasoningSummary": "example",
      "citationCount": 0,
      "relationships": {
        "assets": [
          {
            "relationship": null,
            "direction": null,
            "via": null,
            "id": null,
            "assetKey": null,
            "name": null,
            "ticker": null,
            "asset_type": null
          }
        ],
        "markets": [
          {
            "relationship": null,
            "direction": null,
            "via": null,
            "marketKey": null,
            "venue": null,
            "nativeMarketId": null,
            "question": null
          }
        ],
        "signals": [
          {
            "relationship": null,
            "direction": null,
            "via": null,
            "id": null,
            "signal_type": null,
            "canonical_endpoint": null,
            "side": null,
            "published_at": null
          }
        ],
        "truncated": {
          "assets": false,
          "markets": false,
          "signals": false
        }
      }
    }
  ],
  "errorCode": "example",
  "listing": {
    "venue": "polymarket",
    "nativeMarketId": "example",
    "nativeEventId": "example",
    "seriesTicker": "example",
    "marketKey": "example",
    "quotientMarketId": "example",
    "slug": "example",
    "marketUrl": "example",
    "sourceUrl": "example",
    "broker_channels": [
      "robinhood"
    ],
    "robinhood_category": "example",
    "robinhood_url": "example"
  }
}