For AI agents: a documentation index is available at the root level at /llms.txt and /llms-full.txt. Append /llms.txt to any URL for a page-level index, or .md for the markdown version of any page.
API StudioContact Support
GuidesAPI ReferenceChangelog
GuidesAPI ReferenceChangelog
  • API Reference
          • GETEvent Feed
          • GETEvent by ID
          • GETPublication Feed
          • GETArticle by ID
          • POSTSubscribe to webhook alerts
          • POSTCreate subscription
          • GETList subscriptions
          • GETGet subscription
          • PATCHUpdate subscription
          • DELUnsubscribe
LogoLogo
API StudioContact Support
API ReferenceDatasetsOdysseyFeed

Publication Feed

GET
https://api.runcaptain.com/v2/datasets/odyssey/publications/feed
GET
/v2/datasets/odyssey/publications/feed
1import requests
2import json
3
4BASE_URL = "https://api.runcaptain.com"
5API_KEY = "your_api_key"
6
7# Title-only page for cheap polling
8response = requests.get(
9 f"{BASE_URL}/v2/datasets/odyssey/publications/feed",
10 headers={"Authorization": f"Bearer {API_KEY}"},
11 params={"fields": "ids", "page_size": 100},
12 timeout=30.0,
13)
14print(json.dumps(response.json(), indent=2))
1{
2 "articles": [
3 {
4 "id": "art_xyz789",
5 "title": "Inside Stripe's New Embedded Finance Play",
6 "published_at": "2026-05-26T10:00:00Z"
7 }
8 ],
9 "has_more": true,
10 "next_cursor": "eyJkYXkiOiAiMjAyNi0wNS0yNiIsICJsZWsiOiB7Li4ufX0=",
11 "page_size": 40
12}
Global, reverse-chronological firehose of articles from the tracked publications, with Odyssey entity linking already applied. Each mentioned company is resolved to its `entity_id`, so a downstream model immediately has the company's funding, headcount, and graph position. **Paging:** call with no parameters for the most recent page. Bound the window with `since`/`until`, then pass `next_cursor` back as `cursor` until `has_more` is `false`. **Payload modes:** `fields=full` (default) returns entity-linked items. `fields=ids` returns title-only items (id, title, published_at) for cheap, frequent polling; fetch full detail for selected items with `GET /v2/datasets/odyssey/publications/articles/{article_id}`. **Responses:** a read with no matches returns `200` with an empty `articles` list. If the upstream source is briefly unavailable the call returns `503`; retry after a short pause.
Was this page helpful?
Previous

Article by ID

Next
Built with

Global, reverse-chronological firehose of articles from the tracked publications, with Odyssey entity linking already applied. Each mentioned company is resolved to its entity_id, so a downstream model immediately has the company’s funding, headcount, and graph position.

Paging: call with no parameters for the most recent page. Bound the window with since/until, then pass next_cursor back as cursor until has_more is false.

Payload modes: fields=full (default) returns entity-linked items. fields=ids returns title-only items (id, title, published_at) for cheap, frequent polling; fetch full detail for selected items with GET /v2/datasets/odyssey/publications/articles/{article_id}.

Responses: a read with no matches returns 200 with an empty articles list. If the upstream source is briefly unavailable the call returns 503; retry after a short pause.

Authentication

AuthorizationBearer
Bearer token authentication using API key

Headers

X-Organization-IDstringOptional

Query parameters

cursorstringOptional

Opaque pagination cursor returned as next_cursor by the previous page. Pass it back verbatim to fetch the next (older) page. The feed walks UTC-day partitions backward automatically, so a single cursor is enough to drain the entire window, do not parse or construct it yourself.

page_sizeintegerOptional1-500Defaults to 40

Maximum items to return per page (1 to 500, default 40).

fieldsenumOptionalDefaults to full

full (default) returns complete items. ids returns title-only items (id, title, published_at) for cheap polling.

Allowed values:

Response

A page of articles, newest first.
articleslist of objects
has_moreboolean
True if more items remain in the requested window.
next_cursorstring or null

Cursor for the next (older) page. null when the feed window is fully drained.

page_sizeinteger
Page size that was applied.

Errors

401
Unauthorized Error