Chronological, cursor-paginated stream of articles.
Always live: every read builds the feed at request time — articles are gathered from publisher sources, merged, de-duplicated, and sorted by recency. The aggregated listing itself is never cached; only per-article enrichment work is. `fields=ids` is the cheap title-only mode. `fields=full` returns entity-linked articles; articles not yet enriched come back with `enrichment_status="pending"` — the list never enriches a whole page inline. Hydrate individual articles via `GET /v2/datasets/odyssey/publications/articles/{article_id}`, which enriches on demand. `since`/`until` window by time; page via `next_cursor`.
Filters: `publications=` is a cheap publisher allowlist applied before enrichment. `sector=` and `has_entities=` depend on enrichment, so they hydrate the page on demand — the page size is clamped low and each request carries an enrichment budget and wall-clock deadline; when a bound is hit you receive a partial page plus a cursor to continue.
Query parameters
sincestring or nullOptional
Start boundary: items at/after this ISO-8601 UTC timestamp
untilstring or nullOptional
End boundary: items strictly before this ISO-8601 UTC timestamp
cursorstring or nullOptional
Opaque next_cursor from a prior page; supersedes until
page_sizeintegerOptional1-500Defaults to 100
publicationslist of strings or nullOptional
Pre-enrichment allowlist: only articles from these publishers (registrable domain, canonical slug, or catalog name)
publicationlist of strings or nullOptional
Singular alias of publications (accepted for compatibility; merged with publications)
sectorstring or nullOptional
Filter to articles whose enriched sector matches (hydrates the page on demand; page is clamped + budgeted). Tolerant of case, separators, and shorthand (e.g. fintech matches Financial Services)
has_entitiesboolean or nullOptional
Filter to articles that did/didn’t resolve any entity (hydrates the page on demand; page is clamped + budgeted)
fieldsstringOptionalformat: "^(ids|full)$"Defaults to full
‘ids’ = titles and ids only (no entity-linking); ‘full’ = entity-linked articles
title_onlyboolean or nullOptional
Alias for fields=ids: titles + ids only, no entity-linking
Response
Successful Response
articleslist of objectsOptional
has_morebooleanOptionalDefaults to false
next_cursorstring or nullOptional
page_sizeinteger or nullOptional