Documentation · Schema

Schema reference

Every field in the Vera news API, with explicit definitions for the interpretive fields.


News schema (/pm/v2/news)

The rich news feed. Each item is a news event with related markets nested underneath, including source metadata, context, rationale, market snapshots, and momentum tags.

news itemjson
{
  "news_event": {
    "id": "headline_abc123",
    "headline": "Iran says it will close the Strait of Hormuz",
    "short_headline": "Iran threatens Hormuz closure",
    "source_news_url": null,
    "source_name": "RSS",
    "source_type": "rss",
    "source_tier": "t1",
    "source_url": null,
    "short_context": "Direct closure would resolve multiple geopolitics markets.",
    "long_context": "Extended context on the story...",
    "author": null,
    "feed_categories": ["geopolitics"],
    "source_published_at": "2026-06-10T14:32:00Z",
    "endpoint_published_at": "2026-06-10T14:34:12Z",
    "aggregate_event_relevance": {
      "bucket": "high"
    }
  },
  "related_markets": [
    {
      "main_market": {
        "market_id": "polymarket_event_abc",
        "market_url": "https://polymarket.com/event/...",
        "market_title": "Will Iran close the Strait of Hormuz by EOY 2026?",
        "outcomes": null,
        "news_effect": null,
        "market_snapshot": null,
        "thin_liquidity": null,
        "momentum": null
      },
      "market_relationship": {
        "bucket": "high",
        "summary": "Markets interpret the Iranian statement as supportive of YES."
      },
      "sub_markets": [
        {
          "sub_market_id": "polymarket_0x1a2b...",
          "sub_market_title": "Will Iran close the Strait of Hormuz by EOY 2026?",
          "market_url": "https://polymarket.com/event/...",
          "outcomes": {
            "yes": { "token_id": null },
            "no": { "token_id": null }
          },
          "news_effect": {
            "affected_outcome": "YES",
            "effect": "supports",
            "relevance_bucket": "high",
            "rationale": "Markets appear to interpret the Iranian statement as supportive of YES because direct closure of Hormuz would resolve the market in favour of YES."
          },
          "market_snapshot": {
            "yes_ask": 0.62,
            "no_ask": 0.39,
            "volume_24h": 142351.20,
            "total_volume": 4821550.00,
            "yes_ask_source": "ask",
            "no_ask_source": "ask",
            "yes_tick_age_seconds": 4,
            "no_tick_age_seconds": 9,
            "note": "Reference only."
          },
          "momentum": {
            "passed": true,
            "pre_move_pp": 1.8,
            "criteria": "ANY |+1.8pp| >= 0.5",
            "config": "v4"
          }
        }
      ]
    }
  ],
  "meta": {
    "content_type": "event-driven market intelligence",
    "not_investment_advice": true,
    "not_trading_signal": true
  }
}
Illustrative shape. Vera is in active development, so fields and metrics may be added or refined as the product improves. Build tolerant clients that ignore unknown fields.

News event fields

FieldTypeNotes
idstringStable identifier for the news event.
headlinestring | nullThe full headline text.
short_headlinestring | null6080 char curated display headline. Null on older items or when generation failed.
source_news_urlstring | nullReserved — currently always null.
source_namestring | nullSource modality: X (curated X/Twitter sources) or RSS (news feeds). Specific source identities are not disclosed.
source_typestring | nulltweet, rss, or other source types.
source_tierstring | nullt1 (top-tier institutional), t2 (established secondary), t3 (informal). Null when classification is pending.
source_urlstring | nullReserved — currently always null.
short_contextstring | nullBrief "why this matters for traders" context.
long_contextstring | nullExtended context or full body.
authorstring | nullReserved — currently always null.
feed_categoriesstring[]Category tags (e.g. geopolitics, crypto).
source_published_atstring | nullISO 8601. When the source originally published.
endpoint_published_atstring | nullISO 8601. When our endpoint emitted this item.
aggregate_event_relevanceobjectContains bucket: one of low, moderate, high.

Related markets structure

Each news item has zero or more related_markets. Each related market contains a main_market (the parent Polymarket event), a market_relationship, and sub_markets (the individual yes/no contracts).

For standalone markets (no parent multi-outcome event), the per-outcome detail is on the main_market directly and sub_markets is empty. For multi-outcome events, per-outcome detail lives on sub_markets[] and the main_market's outcomes, news_effect, and market_snapshot are null. Discriminate via sub_markets.length.

main_market fields

FieldTypeNotes
market_idstringStable identifier for the parent Polymarket event.
market_urlstring | nullLink to the event on Polymarket.
market_titlestringHuman-readable event title.
outcomesobject | nullPopulated for standalone markets; null for multi-outcome events.
news_effectobject | nullPopulated for standalone markets; null for multi-outcome events.
market_snapshotobject | nullPopulated for standalone markets; null for multi-outcome events.
thin_liquidityboolean | nulltrue when the market has thin order-book depth. Useful for filtering out low-liquidity matches. null when liquidity data is unavailable.
momentumobject | nullSee the momentum tag section below.

market_relationship fields

FieldTypeNotes
bucketstringRelevance level: low, moderate, or high.
summarystringNatural-language sentence summarising how the news relates to this market.

The news_effect block

FieldTypeNotes
affected_outcomestringYES or NO: which outcome the event appears to bear on.
effectstringsupports or opposes. Whether the news appears consistent with or contrary to the referenced outcome. Never a buy/sell direction.
relevance_bucketstringlow, moderate, or high. How strongly the event relates to this specific market.
rationalestring | nullNatural-language sentence. Phrasing convention: "Markets appear to interpret X as supportive of YES because...". Null for low-bucket items.

The interpretive fields

Several fields in the schema are interpretive: aggregate_event_relevance at the event level and relevance_bucket at the per-market level. These represent estimated relevance levels and are explicitly not probabilities, expected returns, confidence levels, or trading signals.

The values are simple levels (low, moderate, high) rather than numeric scores, by design. Levels keep you from reading too much into a 0.7-vs-0.8 score that doesn't exist, and leave the precise weighting to you.

The market_snapshot block

A snapshot of the market at the moment the event was processed, included for reference and mapping only. The note field says so explicitly. Do not treat it as a live price feed.

FieldTypeNotes
yes_ask / no_asknumber | nullBest ask on each side at processing time, as an implied probability (01). null means no usable price was found; don't derive it from the opposite side.
yes_ask_source / no_ask_sourcestring | nullHow each side resolved: ask (CLOB orderbook), ws (price-stream tick), or null (no price found).
volume_24hnumber | nullTrailing 24-hour traded volume, in USD.
total_volumenumber | nullAll-time traded volume, in USD.
yes_tick_age_seconds / no_tick_age_secondsinteger | nullSeconds since the most recent price tick on each side, computed at serve time, so you can judge how fresh the snapshot is right now.

The momentum tag

Each sub-market (or standalone main_market) may carry a momentum object. It flags whether the related market visibly movedaround the event, inside our latency window, by more than this category's threshold, marking a higher signal-to-noise subset of the feed. It is explicitly descriptive, not predictive: it says the market reacted, not that any position would profit.

FieldTypeNotes
momentum.passedbooleantrue if the related market moved past this category's gate threshold within our window.
momentum.pre_move_ppnumber | nullThe signed move, in percentage points of implied probability, between event time and processing time.
momentum.criteriastring | nullThe literal rule evaluated, e.g. ANY |+1.8pp| >= 0.5.
momentum.configstring | nullThe gate config version that produced the verdict (e.g. v4).

The whole momentum object is null until the gate logs the event (about a minute after publish), or when no live price existed at event time. To consume only the tagged subset, filter on momentum.passed === true. What it is not: not a probability, not an expected return, not an accuracy or win-rate claim, not a trading signal.

Versioning

Breaking changes ship under a new URL prefix; non-breaking additions ship in-place. Additive changes you should expect to see ship without a version bump: new optional fields on existing objects, new credibility tiers, new venue identifiers. Build tolerant clients that ignore unknown fields.

What Vera is not

Repeating from Overview because it bears repeating in the same place a developer reads the schema for the first time: the output is informational and interpretive. It is not investment advice, not a trading signal, and not a recommendation. The interpretive fields are simple low / moderate / high levels. Build accordingly.