Newsreader
Query and manage the Omni Newsreader via its JSON API.
API Base URL
All endpoints are at https://beryllium.oryx-ide.ts.net/news/api/.
Endpoints
GET /api/articles?limit=N
Recent articles (default 50). Returns array:
[{"id": 123, "title": "...", "url": "...", "feed": "Feed Name",
"content": "...", "publishedAt": "2026-...", "fetchedAt": "2026-..."}]
GET /api/article/:id
Single article by ID.
GET /api/topics
Topic clusters (grouped by shared phrases in titles). Returns array:
[{"label": "Topic Name", "articles": [...]}]
GET /api/search?q=QUERY
Full-text search across articles. Returns array of articles.
GET /api/feeds
List all subscribed feeds.
POST /api/feeds
Add a feed. JSON body: {"url": "https://example.com/feed.xml"}.
POST /api/ingest
Trigger feed ingestion. Returns summary of new/skipped/failed articles per feed.
GET /api/digest?hours=N
Generate a digest of recent articles (default 24h), grouped by topic clusters. Returns:
{"period": "daily", "totalArticles": 42, "from": "...", "to": "...",
"topics": [{"label": "Topic Name", "articles": [{"title": "...", "url": "...", "feed": "...", "snippet": "..."}]}],
"other": [...]}
Examples
# Get latest 10 articles
curl -s 'https://beryllium.oryx-ide.ts.net/news/api/articles?limit=10' | jq '.[].title'
# Search for articles about AI
curl -s 'https://beryllium.oryx-ide.ts.net/news/api/search?q=artificial+intelligence' | jq '.[].title'
# Get current topic clusters
curl -s 'https://beryllium.oryx-ide.ts.net/news/api/topics' | jq '.[].label'
# Add a new RSS feed
curl -s -X POST 'https://beryllium.oryx-ide.ts.net/news/api/feeds' \
-H 'Content-Type: application/json' \
-d '{"url": "https://example.com/rss.xml"}'
When to Use
- User asks about recent news or “what’s happening”
- User asks to search for articles on a topic
- User wants to add a new feed subscription
- Summarizing news topics or trends