Skip to main content

News and events

The news routes serve one article collection. You can list it, search it by meaning, and read one article with its citation, and you can list the events extracted from the articles about a security. Machine-generated analysis written from the articles is on digests, theses, and themes.

Routes​

you needroute
the newest articles, filteredGET /v1/news
articles ranked by meaning against a queryGET /v1/news/search
one article with its textGET /v1/news/{article_id}
events extracted from a security's articlesGET /v1/securities/{symbol}/events

Every parameter and response schema is in the API reference.

curl "https://api.tauric.ai/v1/news?instrument=security:AAPL&limit=5" \
-H "Authorization: Bearer $TAURIC_API_KEY"
curl "https://api.tauric.ai/v1/news?exposure=crypto&since=2026-09-28T00:00:00Z" \
-H "Authorization: Bearer $TAURIC_API_KEY"
curl "https://api.tauric.ai/v1/news/search?q=oil%20supply%20disruption&limit=5" \
-H "Authorization: Bearer $TAURIC_API_KEY"
curl "https://api.tauric.ai/v1/news/1" \
-H "Authorization: Bearer $TAURIC_API_KEY"

Article list​

GET /v1/news lists articles, newest first by their article time, with ties broken by id. It is paged by limit (default 20, at most 21) and after (lists).

A list can repeat a story syndicated to several outlets or URLs. collapse=story lists one row per story instead: the newest matching article of each group of near-duplicate coverage, with story_members counting the matching articles in that group. limit then counts stories. The default, collapse=none, lists every article. Story groups can change as articles arrive.

GET /v1/news/search (limit default 10, at most 21) ranks articles by meaning against q. Results are ordered by relevance (score, highest first), never by time, so a months-old article can rank first. For the newest articles about something, list them with instrument and since, or bound the search with since.

Search counts stories, not articles: articles grouped into one story (story_id) collapse to the best-scoring one. An article in no story is its own story, so an ungrouped near-duplicate from another publisher can appear beside it. limit and after page the results (lists).

Search is not exhaustive: it can return fewer than limit stories while other matching stories exist. Narrow the query or the filters (since, until, instrument) to reach them.

Filters​

The list and search take the same filters. They select the articles before ranking, story collapsing, and the limit, and several filters combine with AND.

filterselects
instrumentarticles tagged as about one security listing
entityarticles that mention a typed entity
exposurearticles with a recorded financial exposure
domainarticles with a recorded content domain
topic, event_type, sentiment, impactthe closed annotation vocabularies (the OpenAPI enums); event_type matches an article carrying an extracted event of that type, not the event's own date
since, untilinclusive bounds on the article time

instrument takes a security key (security:AAPL, or security:{MIC}:{SYMBOL}); news is attributed to securities only. A share class matches in any spelling an article uses (BRK.B or BRK-B). A bare ticker that several venues currently hold is 409 ambiguous_instrument, naming the venue forms. Another kind, a key without its kind, an external spelling (BRK-B), an unregistered ticker, or a venue that does not hold the ticker is 422.

entity takes a typed entity key, {type}:{normalized name} (organization:apple, person:…, product:…). It matches a mention, not a resolved issuer identity.

exposure is one of equity, fx, commodity, crypto, or fixed_income (asset class and instrument type); exposure=rates or exposure=credit is 422 naming fixed_income, and exposure=economy is 422 naming domain=macro. domain is macro: the economy as a whole (growth, employment, inflation, policy).

Exposures, domains, topics, and event_types are separate dimensions: domain=macro does not read the topic macro, and exposure=fixed_income does not read the topic rates.

since and until are instants with a timezone. A naive instant, a date alone, or since after until is 422. In a URL, write an offset's + as %2B (2026-09-20T12:00:00%2B02:00): a bare + in a query string is a space, and the instant is then refused. Unknown or malformed parameters follow the rules for every request.

Article fields​

Every article carries its citation: id, title, publisher (a name or a web domain, as the article gives it), url, and its time fields. Each article also carries word_count and its annotations. GET /v1/news/{article_id} adds the article's text.

Annotations​

The annotations (summary, sentiment, impact, topics, exposures, domains, instruments, unresolved_instrument_count, event_types) are served when the article is annotated. Otherwise each is null, field_states says why (not_held), and the article matches no annotation filter.

A succeeded annotation's empty exposures or domains ([]) means none was recorded, not that the article has none: an economy-only article is exposures: [], domains: ["macro"].

Instruments​

instruments names what the article is about, by instrument keys: security:{SYMBOL}, future:{MIC}:{ROOT} (a contract family), fx:{PAIR}, and series:{key} (an index or yield index). A symbol is named only where it maps to exactly one maintained instrument.

unresolved_instrument_count counts the symbols that do not.

Events and entities in one article​

GET /v1/news/{article_id} adds, inside annotations:

  • events: the extracted events, each with its date as the article writes it (date_verbatim) and its own instruments and unresolved_instrument_count (events);
  • entities: the entities the article mentions.

Article time​

An article carries up to three observed times, each under the field that names it.

fieldwhat it is
published_at, published_at_precisionthe publication instant the publisher stated
listed_at, listed_at_precision: "15m"the 15-minute interval by which the article was public; the article may be much older
available_atwhen the article was added; always set
article_time, article_time_kindpublished_at, else listed_at, else available_at, and which one it is (published, listed, available)

published_at does not change once set. published_at_precision is second when published_at has non-zero seconds; it is null when published_at is null or falls on a whole minute, whose precision is unknown (field_states.published_at_precision not_held).

listed_at is not the publication time.

The list's order and the since/until filters use article_time. It is when the article appeared, never when an event it reports occurred.

Collection freshness​

Every list and search answer carries freshness, the collection's own freshness, which tells an empty data apart from a collection that has stopped receiving articles:

fieldmeaning
latest_published_atthe newest stated publication time held
latest_listed_atthe newest listed_at held; not comparable with latest_published_at as "newest article"
latest_available_atwhen the newest article was added
searchable_throughon search only: when the newest article search can find was added; it trails latest_available_at while newer articles are not yet searchable, and GET /v1/news already lists those

Each is null only when no article of its kind is held.

Withdrawn articles​

A withdrawn article is in no list, search, digest, or analysis input. GET /v1/news/{article_id} answers it 410 gone with the reason. An id no article ever had is 404 not_found.

Events​

GET /v1/securities/{symbol}/events lists events extracted from the articles about a security, newest article first. It is paged by limit (default 40, at most 45) and after (lists). Every field is described in the API reference.

Each event is an assertion of the article that mentions it, with that article's citation in article. Its date_verbatim is the article's own dating of the event.

An event is listed under its article's time, not when it occurred: an earnings result recapped in today's article is not today's event. since and until bound the articles' article_time as in filters. The default window is the 30 days before until (or now).

One event mentioned by several articles of one story is listed once, under its earliest-time mention. A withdrawn article's events are not served.