Get Publication Feed

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 objects
has_morebooleanDefaults to false
next_cursorstring or null
page_sizeinteger or null