/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.
Parameters
| Name | In | Type | Description |
|---|---|---|---|
| jobId | path, required | string | Format: uuid |
| view | query | "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
| Field | Type | Description | ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| 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
| ||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| errorCode required | string | null | |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||
| listing required | CanonicalMarketRouting | null | listing fields
|
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 --request GET \
--header "x-quotient-api-key: $QUOTIENT_API_KEY" \
'https://quotient-api-gateway.onrender.com/api/auth/forecast-requests/example-jobId'{
"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"
}
}