v1

latestOpenAPI 3.0.32026-07-246185298.2 KB
Market Intelligence

Content Detail

Retrieve every customer-facing field for a single piece of generated content. Use the compact /content/ list to find IDs, then hit this endpoint for the full row.

get/api/v1/market_intelligence/content/{id}

Path parameters

idinteger required

Response

idinteger required
contentType'pulse' | 'earnings_preview' | 'trader_note' | 'weekly_digest' | 'convergence_report' | 'market_commentary'
  • pulse - Stock Pulse
  • earnings_preview - Earnings Preview
  • trader_note - Sales Trader Note
  • weekly_digest - Weekly Digest
  • convergence_report - Convergence Report
  • market_commentary - Market Commentary
pulseType'short_interest' | 'analyst' | 'options' | 'institutional' | 'ctb' | 'utilization' | 'signal' | 'convergence' | ''

Populated when content_type=pulse. Empty otherwise.

  • short_interest - Short Interest
  • analyst - Analyst Activity
  • options - Options / PCR
  • institutional - Institutional / 13F
  • ctb - Cost to Borrow
  • utilization - Utilization
  • signal - ORTEX Signal
  • convergence - Convergence
themestring

Theme slug for weekly digests (e.g. overall, short_interest, analyst). Empty for non-digest content.

tickerstring nullable required
exchangestring nullable required
headlinestring required

Full headline for entitled callers + long-form articles. Pulses get a ~3-word teaser when locked.

Rationale: pulses normally render with just the headline (pulse wire, list rows), so showing the full text alongside a padlock would make the lock cosmetic. Articles have a rich body / summary / analyst grid behind the paywall, so the headline can stay visible — readers need it to decide whether to click, and the actual gated content is below.

bodystring required

Full body, or empty string when locked.

publishedAtstring date-time nullable
provenanceobject required
identifiersobject[] required

Per-row list of {exchange, ticker, mic, isin} dicts — one per unique TradingItem on this row.

Includes both the primary tradingitem and every body-mentioned ticker on the related_tradingitems M2M, so callers can join MI articles to their internal instrument keyspace without a separate round trip. Empty when the row has no ticker at all (some weekly digests + market commentaries).

topicsstring[] required

Closed-vocabulary subject-matter tags for this row.

Lets callers filter "anything SI-flavoured" with one query (?topics=short_interest) instead of enumerating content_type=pulse&pulse_type=short_interest + content_type=weekly_digest&theme=short_interest + content_type=market_commentary&theme=short_interest separately. See compute_topics and Topic in market_intelligence.constants for the resolution rules and the closed vocabulary.

Derived at request time from existing discriminators — no schema change required. Empty list (rather than null) when no topic resolves, so callers always get a JSON array.