GET

/api/v1/signals/featured

The featured trade signal

The signal Quotient is currently featuring: an operator pin when set, else a deterministic pick over active, live-priced, unflagged signals with a recent forecast update (volume and expiry floors; freshest publish day, then conviction, then upside to Q). Pinned rows must also pass the caution, warning, and divergence filters. Returns signal: null when nothing clears the floors.

Price $0.005Auth x-quotient-api-key or x402Limit 20/s · 600/min · 20,000/day

Parameters

NameInTypeDescription
windowqueryintegerLatest-forecast update lookback in hours for the auto pick. Default: 24

Default: 24; Minimum: 1; Maximum: 168

Responses

200: The featured signal, or null when nothing qualifies
FieldTypeDescription
signal
required
TradeSignalItem | nullA Quotient trade signal with separate publication, forecast-freshness, and lifecycle context. Entry values are frozen at publish; forecast_status, conviction, pricing against Q, and capacity are derived live. All *_cents values are Q-side cents: the cost/value of the share on the signal's side.
signal fields
FieldTypeDescription
id
required
string
created_atstringCompatibility alias for published_at

Format: date-time

published_atstringWhen the signal itself was published

Format: date-time

forecast_updated_atstring | nullWhen Q's latest forecast for the market was created

Format: date-time

is_new_todaybooleanTrue when published_at falls on the current UTC calendar day
is_freshbooleanTrue when forecast_updated_at is no more than six hours old
is_activebooleanTrue while the signal is non-terminal; false only for retired signals. This is independent of is_new_today and is_fresh.
side"YES" | "NO"The trade side: sign of (Q − market price) at publish
entry_qnumberQuotient probability at publish (0-100 YES scale)
entry_pmnumberLegacy wire name for the source venue's YES price at signal publication (0-100). The field applies to every supported prediction-market venue.
entry_spread_ppnumberRaw |entry_q − entry_pm| in percentage points
window_daysinteger | nullDays to resolution at publish
resolves_in_windowbooleanMarket settles inside the 7-day hold, so the upside runs to 100¢
forecast_statusobject | nullForecast status using verified live prices and the less favorable of the frozen signal entry and latest forecast venue snapshot, measured on the frozen signal side. Null when a live quote or forecast is unavailable. Settlement provenance is independent metadata.
forecast_status fields
FieldTypeDescription
state
required
"warning" | "caution" | "converged" | "converging" | "sideways" | "diverging"
cents
required
integerMovement states: gap closed (+) or opened (−) over the window. converged: how far past Q the venue sits. Adverse tiers: the move from the worse anchor in position-space cents (negative).
adverse_move_pct
required
number | nullThe standing worse-of-anchors adverse move, RELATIVE % of anchor cost, positive = against Q's side. Served on every state — a 14.9% move stays visible below the caution line. Negative means the market has moved in Q's favour. Null when no anchor is priced.
basis
required
"since_publish" | "since_forecast"The window the read measured: an adverse tier stamps the anchor that fired; other states carry the surface's measurement window.
price_source
required
"live" | "graph"live = verified venue quote; graph = an explicitly stale graph_snapshot for a venue without a live adapter. Graph snapshots carry stale discovery data.
retired_reason"resolved" | "flipped" | "fading_q" | "expired" | null
conviction_tierinteger | null1-3 from the forecaster's ensemble-draw dispersion (3 = draws tightly agree). Not spread.
conviction"high" | "medium" | "low" | null
has_bandbooleanFalse only when no conviction estimate could be computed at all (missing Q or price). Pre-ensemble inferred estimates report true with tier capped at 2.
latest_qnumber | nullLatest canonical Q (0-1)
thesis
required
string | nullReviewable thesis paired with latest_q. Falls back to the latest forecast's BLUF; null when neither is stored.
q_side"YES" | "NO"The side Q's latest forecast favors at current prices
q_value_centsinteger | nullThe side share priced at Q's latest probability (¢)
entry_cost_centsinteger | nullSide cost at publish (¢)
current_cost_centsinteger | nullSide cost now (¢)
distance_to_convergence_centsinteger | nullCents from current cost to Q's price (or 100¢ when resolves_in_window); <= 0 means the market has reached Q
converge_upside_pctinteger | null% gain from current cost if the market price moves to Q
max_roi_pctinteger | nullMax upside: % return from current cost if the market resolves on Q's side (side share settles at 100¢) assuming resolution on that side
live_pricedbooleanTrue only when current pricing came from a verified live Polymarket International or Kalshi venue quote. A failed or unsupported quote does not fall back to graph odds.
priced_atstring | nullObservation timestamp of the verified live venue quote; null when unavailable.

Format: date-time

capacity_usd_at_2cnumber | nullPersisted near-touch depth within 2¢, USD notional (refreshed ~12h)
capacity_availableboolean | null
capacity_basis"depth-2c" | "volume-fallback" | nullvolume-fallback = capacity unknown but 24h volume >= 5000
capacity_as_ofstring | null

Format: date-time

drawdown_risk_elevatedboolean | nullTrue when Quotient's risk model puts at least a 15% probability on this signal's side losing most of its remaining value within roughly 72 hours of the latest forecast (forecast_updated_at). The model head is trained on matured 72-hour price paths: a side counts as a deep drawdown when its price printed twice within two hours at or below a quarter of the entry price, or when the market resolved against it. Null means no current read: the forecast predates the risk model (August 2026) or the read has aged past the model's ~72h horizon with unknown current risk. This separate model measures path risk; conviction_tier measures ensemble-draw dispersion. Near expiry, elevated readings are common on both sides, because resolution itself takes the losing side down by more than 75%.
crash_risk_elevatedboolean | nullDeprecated former name for drawdown_risk_elevated; same value. Emitted for one release.
venue_quote
required
VenueQuoteV1
venue_quote fields
FieldTypeDescription
schema_version
required
"1"
venue
required
"polymarket" | "polymarket_us" | "kalshi" | "limitless" | nullPrediction-market venue key: polymarket (Polymarket International), polymarket_us (Polymarket US), kalshi, or limitless.
market_id
required
string | null
yes_bid
required
number | null

Minimum: 0; Maximum: 1

yes_ask
required
number | null

Minimum: 0; Maximum: 1

yes_last
required
number | null

Minimum: 0; Maximum: 1

selected_probability
required
number | nullPrediction-market YES probability selected for the enclosing response. Inspect freshness and quote_method before treating it as current.

Minimum: 0; Maximum: 1

quote_method
required
string | nullmidpoint, bid, ask, fresh last, or graph_snapshot. Null when pricing is unavailable.
venue_timestamp
required
string | nullSource clock for the selected quote: book update for book methods, last-trade time for last, or catalog observation time for graph_snapshot.

Format: date-time

observed_at
required
string | nullWhen Quotient observed the live quote or stored graph snapshot.

Format: date-time

freshness
required
CapabilityState
resolution_reference
required
SourceReferenceV1 | nullOptional settlement-feed context. Signal eligibility uses venue pricing.
resolution_reference fields
FieldTypeDescription
schema_version
required
"1"
basis_id
required
string | null
settlement_spec_id
required
string | null
forecast_target_keystring | null
observable_id
required
string | null
provider
required
string | null
instrument_id
required
string | null
symbolstring | null
contract_monthstring | null
roll_rulestring | null
unitstring | null
currencystring | null
price_fieldstring | null
candle_intervalstring | null
sessionstring | null
windowstring | null
timezonestring | null
roundingstring | null
value
required
number | null
value_kind
required
ValueKindobserved = a provider print. estimated = Quotient's basis estimate carrying a mandatory estimate block; the value belongs to the estimator, not to the settlement provider the rules name.
estimate
required
EstimateV1 | nullPresent exactly when value_kind is estimated; a malformed block fails closed as a missing value.
estimate fields
FieldTypeDescription
provider
required
stringThe estimator, e.g. quotient-basis. Attribution belongs here, not to the rules provider.
method
required
stringEstimator method identity, e.g. ewma-log/1.
ci_low
required
number
ci_high
required
number
inputs_at
required
stringWhen the estimator's inputs were observed.

Format: date-time

estimate_version
required
string | null
provider_timestampstring | null

Format: date-time

source_timestampstring | null

Format: date-time

observed_atstring | null

Format: date-time

freshness
required
CapabilityState
collection_transportstring | null
strikenumber | null
comparatorstring | null
fixing_window_startstring | null
fixing_window_endstring | null
barrier_window_startstring | null
barrier_window_endstring | null
payout_semanticsstring | null
rules_urlstring | null

Format: uri

rules_hashstring | null
rules_versionstring | null
mapping_provenancestring | null
mapping_status
required
CapabilityState
execution_reference
required
SourceReferenceV1 | nullSettlement observable and contract semantics. provider identifies the instrument used by the settlement rules. Estimated values are attributed to the estimate block's provider. Asset identity is recorded separately.
execution_reference fields
FieldTypeDescription
schema_version
required
"1"
basis_id
required
string | null
settlement_spec_id
required
string | null
forecast_target_keystring | null
observable_id
required
string | null
provider
required
string | null
instrument_id
required
string | null
symbolstring | null
contract_monthstring | null
roll_rulestring | null
unitstring | null
currencystring | null
price_fieldstring | null
candle_intervalstring | null
sessionstring | null
windowstring | null
timezonestring | null
roundingstring | null
value
required
number | null
value_kind
required
ValueKindobserved = a provider print. estimated = Quotient's basis estimate carrying a mandatory estimate block; the value belongs to the estimator, not to the settlement provider the rules name.
estimate
required
EstimateV1 | nullPresent exactly when value_kind is estimated; a malformed block fails closed as a missing value.
estimate fields
FieldTypeDescription
provider
required
stringThe estimator, e.g. quotient-basis. Attribution belongs here, not to the rules provider.
method
required
stringEstimator method identity, e.g. ewma-log/1.
ci_low
required
number
ci_high
required
number
inputs_at
required
stringWhen the estimator's inputs were observed.

Format: date-time

estimate_version
required
string | null
provider_timestampstring | null

Format: date-time

source_timestampstring | null

Format: date-time

observed_atstring | null

Format: date-time

freshness
required
CapabilityState
collection_transportstring | null
strikenumber | null
comparatorstring | null
fixing_window_startstring | null
fixing_window_endstring | null
barrier_window_startstring | null
barrier_window_endstring | null
payout_semanticsstring | null
rules_urlstring | null

Format: uri

rules_hashstring | null
rules_versionstring | null
mapping_provenancestring | null
mapping_status
required
CapabilityState
basis_status
required
BasisStatus
grounding_status
required
GroundingStatusactionable requires a verified settlement mapping and every required fresh source input. estimated authorizes the same reads as actionable and are attributed to Quotient: the reference value is Quotient's basis estimate (value_kind estimated) with a tight confidence interval. Ordering: actionable > estimated > diagnostic > unavailable; automated use and execution handoffs require actionable or estimated grounding.
suppression_reason
required
string | nullvenue_quote_unavailable when the live quote is missing (the only availability gate); other values describe optional settlement-feed context or the perp execution handoff.
market
required
TradeSignalMarket
market 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

questionstring
condition_idstring | nullPolymarket condition ID when the source venue provides that identifier; null for non-Polymarket rows. Use marketKey for venue-neutral identity.
end_datestring | null

Format: date-time

market_oddsnumber | nullCurrent selected source-venue YES probability (0-1), exactly matching venue_quote.selected_probability when present.
volume_24hnumber | nullNullable venue-reported 24-hour activity; not directly comparable across venues.
quotientUrlstring | null
polymarketUrlstring | nullLegacy Polymarket navigation alias. Populated only for Polymarket International rows and null for Polymarket US, Kalshi, and Limitless; use marketUrl for venue-neutral navigation.
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
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
featured_by
required
"pin" | "auto" | null
messagestringPresent when signal is null
401: Unauthorized
FieldTypeDescription
error
required
stringError code
message
required
stringHuman-readable message
retry_afterintegerSeconds to wait (only on 429)
retryAfterintegerSeconds to wait for owner-scoped forecast-request quota errors.
limit_scopestringQuota scope that rejected the request, such as standard or x_research.
quotaScopestringStable forecast-request quota scope, such as venue_market_daily.
limitintegerConfigured bound for the forecast-request quota that was exceeded.
402: Payment Required
FieldTypeDescription
error
required
stringError code
message
required
stringHuman-readable message
retry_afterintegerSeconds to wait (only on 429)
retryAfterintegerSeconds to wait for owner-scoped forecast-request quota errors.
limit_scopestringQuota scope that rejected the request, such as standard or x_research.
quotaScopestringStable forecast-request quota scope, such as venue_market_daily.
limitintegerConfigured bound for the forecast-request quota that was exceeded.
403: Insufficient credits for the requested route
FieldTypeDescription
error
required
stringError code
message
required
stringHuman-readable message
retry_afterintegerSeconds to wait (only on 429)
retryAfterintegerSeconds to wait for owner-scoped forecast-request quota errors.
limit_scopestringQuota scope that rejected the request, such as standard or x_research.
quotaScopestringStable forecast-request quota scope, such as venue_market_daily.
limitintegerConfigured bound for the forecast-request quota that was exceeded.
422: Invalid request parameters
FieldTypeDescription
error
required
stringError code
message
required
stringHuman-readable message
retry_afterintegerSeconds to wait (only on 429)
retryAfterintegerSeconds to wait for owner-scoped forecast-request quota errors.
limit_scopestringQuota scope that rejected the request, such as standard or x_research.
quotaScopestringStable forecast-request quota scope, such as venue_market_daily.
limitintegerConfigured bound for the forecast-request quota that was exceeded.
429: The caller exceeded a per-second, per-minute, daily, or concurrency limit. No credits are debited and no x402 payment is settled for this response.
FieldTypeDescription
error
required
stringError code
message
required
stringHuman-readable message
retry_afterintegerSeconds to wait (only on 429)
retryAfterintegerSeconds to wait for owner-scoped forecast-request quota errors.
limit_scopestringQuota scope that rejected the request, such as standard or x_research.
quotaScopestringStable forecast-request quota scope, such as venue_market_daily.
limitintegerConfigured bound for the forecast-request quota that was exceeded.

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/v1/signals/featured'
200 · application/json
{
  "signal": {
    "id": "example",
    "created_at": "2027-01-01T00:00:00Z",
    "published_at": "2027-01-01T00:00:00Z",
    "forecast_updated_at": "2027-01-01T00:00:00Z",
    "is_new_today": false,
    "is_fresh": false,
    "is_active": false,
    "side": "YES",
    "entry_q": 0,
    "entry_pm": 0,
    "entry_spread_pp": 0,
    "window_days": 0,
    "resolves_in_window": false,
    "forecast_status": {
      "state": "warning",
      "cents": 0,
      "adverse_move_pct": 0,
      "basis": "since_publish",
      "price_source": "live"
    },
    "retired_reason": "resolved",
    "conviction_tier": 0,
    "conviction": "high",
    "has_band": false,
    "latest_q": 0,
    "thesis": "example",
    "q_side": "YES",
    "q_value_cents": 0,
    "entry_cost_cents": 0,
    "current_cost_cents": 0,
    "distance_to_convergence_cents": 0,
    "converge_upside_pct": 0,
    "max_roi_pct": 0,
    "live_priced": false,
    "priced_at": "2027-01-01T00:00:00Z",
    "capacity_usd_at_2c": 0,
    "capacity_available": false,
    "capacity_basis": "depth-2c",
    "capacity_as_of": "2027-01-01T00:00:00Z",
    "drawdown_risk_elevated": false,
    "crash_risk_elevated": false,
    "venue_quote": {
      "schema_version": "1",
      "venue": "polymarket",
      "market_id": "example",
      "yes_bid": 0,
      "yes_ask": 0,
      "yes_last": 0,
      "selected_probability": 0,
      "quote_method": "example",
      "venue_timestamp": "2027-01-01T00:00:00Z",
      "observed_at": "2027-01-01T00:00:00Z",
      "freshness": "verified"
    },
    "resolution_reference": {
      "schema_version": "1",
      "basis_id": "example",
      "settlement_spec_id": "example",
      "forecast_target_key": "example",
      "observable_id": "example",
      "provider": "example",
      "instrument_id": "example",
      "symbol": "example",
      "contract_month": "example",
      "roll_rule": "example",
      "unit": "example",
      "currency": "example",
      "price_field": "example",
      "candle_interval": "example",
      "session": "example",
      "window": "example",
      "timezone": "example",
      "rounding": "example",
      "value": 0,
      "value_kind": "observed",
      "estimate": {
        "provider": "example",
        "method": "example",
        "ci_low": 0,
        "ci_high": 0,
        "inputs_at": "2027-01-01T00:00:00Z",
        "estimate_version": "example"
      },
      "provider_timestamp": "2027-01-01T00:00:00Z",
      "source_timestamp": "2027-01-01T00:00:00Z",
      "observed_at": "2027-01-01T00:00:00Z",
      "freshness": "verified",
      "collection_transport": "example",
      "strike": 0,
      "comparator": "example",
      "fixing_window_start": "example",
      "fixing_window_end": "example",
      "barrier_window_start": "example",
      "barrier_window_end": "example",
      "payout_semantics": "example",
      "rules_url": "example",
      "rules_hash": "example",
      "rules_version": "example",
      "mapping_provenance": "example",
      "mapping_status": "verified"
    },
    "execution_reference": {
      "schema_version": "1",
      "basis_id": "example",
      "settlement_spec_id": "example",
      "forecast_target_key": "example",
      "observable_id": "example",
      "provider": "example",
      "instrument_id": "example",
      "symbol": "example",
      "contract_month": "example",
      "roll_rule": "example",
      "unit": "example",
      "currency": "example",
      "price_field": "example",
      "candle_interval": "example",
      "session": "example",
      "window": "example",
      "timezone": "example",
      "rounding": "example",
      "value": 0,
      "value_kind": "observed",
      "estimate": {
        "provider": "example",
        "method": "example",
        "ci_low": 0,
        "ci_high": 0,
        "inputs_at": "2027-01-01T00:00:00Z",
        "estimate_version": "example"
      },
      "provider_timestamp": "2027-01-01T00:00:00Z",
      "source_timestamp": "2027-01-01T00:00:00Z",
      "observed_at": "2027-01-01T00:00:00Z",
      "freshness": "verified",
      "collection_transport": "example",
      "strike": 0,
      "comparator": "example",
      "fixing_window_start": "example",
      "fixing_window_end": "example",
      "barrier_window_start": "example",
      "barrier_window_end": "example",
      "payout_semantics": "example",
      "rules_url": "example",
      "rules_hash": "example",
      "rules_version": "example",
      "mapping_provenance": "example",
      "mapping_status": "verified"
    },
    "basis_status": "verified",
    "grounding_status": "actionable",
    "suppression_reason": "example",
    "market": {
      "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",
      "question": "example",
      "condition_id": "example",
      "end_date": "2027-01-01T00:00:00Z",
      "market_odds": 0,
      "volume_24h": 0,
      "quotientUrl": "example",
      "polymarketUrl": "example",
      "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
        }
      }
    },
    "relationships": {
      "assets": [
        {
          "relationship": "HAS_MARKET",
          "direction": "incoming",
          "via": "direct",
          "id": "example",
          "assetKey": "example",
          "name": "example",
          "ticker": "example",
          "asset_type": "example"
        }
      ],
      "markets": [
        {
          "relationship": "HAS_MARKET",
          "direction": "incoming",
          "via": "direct",
          "marketKey": "example",
          "venue": "polymarket",
          "nativeMarketId": "example",
          "question": "example"
        }
      ],
      "signals": [
        {
          "relationship": "HAS_MARKET",
          "direction": "incoming",
          "via": "direct",
          "id": "example",
          "signal_type": "prediction_market",
          "canonical_endpoint": "/api/v1/signals",
          "side": "example",
          "published_at": "example"
        }
      ],
      "truncated": {
        "assets": false,
        "markets": false,
        "signals": false
      }
    }
  },
  "featured_by": "pin",
  "message": "example"
}