news

Get a news article by UID

Changed on

One enriched article. SEC rows carry the same structured block the feeds serve: insider on a Form 4 row (as on /api/news/insider/), filing on an 8-K row (as on /api/news/), so a uid taken from /api/news/insider/clusters/ opens with its trade data. An 8-K or 6-K earnings filing can also carry earnings (see that field), which no feed populates.

get/api/news/{uid}/

Request

  • Base URL
    https://api.alphai.io
  • URL
    https://api.alphai.io/api/news/{uid}/
  • Auth
    HTTP bearer

Path parameters

uidstring required

Response

A single enriched article.

story_idstring nullable

The story this article belongs to: a permanent key, the same value for a given story on every surface (/api/news/, search, trending, the MCP tools and /api/stories/) and across calls. Filled on every row of /api/news/ and /api/news/search/ since 1.49.0, and always on /api/news/trending/; a lone article is a story of one and names itself. The value is the uid of the story's first root article and does not change when a stronger copy later takes the root over or two stories merge (before 1.49.0 it followed the live root and could move once). Resolve it with /api/stories/{story_id}/: found is a story summarised from two or more publishers, not_a_story means one publisher carried the event (/api/news/{uid}/ has the article), merged names the surviving story. /api/news/{uid}/ carries it too; null only on /api/news/{uid}/related/. The sources_count / sources pair stays collapse-only.

sources_countinteger nullable

Story-collapsed responses only. Number of distinct outlets (source domains) covering this story; the same outlet running it more than once counts once. Most stories are carried by a single outlet, so this is usually 1. Treat a value above 1 as the signal, not the number itself. May exceed the length of sources, which is capped at 10. null in the default feed.

sourcesstring[] nullable

Story-collapsed responses only. Distinct source domains covering this story, in first-appearance order, capped at 10. null in the default feed.

Example response

{
  "enrichment": {
    "tickers": [
      "NVDA"
    ],
    "news_context_enhancement": {
      "key_entities": [
        {
          "type": "company"
        }
      ]
    }
  },
  "earnings": {
    "fiscal_period": "Second Quarter Fiscal 2027",
    "key_metrics": [
      {
        "value": "$96.2 billion",
        "numeric": 96.2,
        "unit": "USD"
      }
    ],
    "segments": [
      {
        "revenue": "$18,002",
        "numeric": 18002,
        "unit": "USD"
      }
    ]
  },
  "story_id": "788e477c66f3849b",
  "sources_count": 3,
  "sources": [
    "reuters.com",
    "apnews.com",
    "bloomberg.com"
  ],
  "insider": {
    "transaction_code": "S",
    "shares": "25000",
    "avg_price_usd": "187.32",
    "total_value_usd": "4683000",
    "insider_name": "STEVENS MARK A",
    "insider_title": "Director",
    "transaction_date": "2026-07-09",
    "filed_at": "2026-07-11T20:31:04Z"
  },
  "filing": {
    "items": [
      "5.02",
      "9.01"
    ],
    "primary_item": "5.02",
    "accession_number": "0001193125-26-231145",
    "filed_at": "2026-09-18T20:05:12Z",
    "event_date": "2026-09-16",
    "exhibit_url": "https://www.sec.gov/Archives/edgar/data/1045810/000104581026000123/ex99-1.htm"
  }
}

Changes

    • info

      added the optional property /////// to the response with the status

    • info

      added the optional property /////// to the response with the status

    • info

      added the optional property /////// to the response with the status

    • info

      added the optional property ///// to the response with the status

    • info

      added the optional property to the response with the status