Journaily for developers
Journaily+ Pro includes programmatic access to your news: a REST API and an MCP server for AI agents. Create API keys from Your plan → Developer workbench. Keys inherit your Pro subscription — if it lapses, they stop working.
Authentication
Two options, same access and quotas:
API keys — send your key as a bearer token on every request. Keys are shown once at creation and stored hashed — treat them like passwords, and revoke any key you suspect leaked.
Authorization: Bearer jk_live_…
OAuth 2.1 — MCP clients with a connect flow (claude.ai remote connectors and similar)
can authorize automatically: the server supports discovery
(/.well-known/oauth-protected-resource, /.well-known/oauth-authorization-server),
dynamic client registration, and the PKCE authorization-code flow with rotating refresh tokens.
Just point the client at https://journaily.com/mcp — you'll be asked to sign in and
approve. Connected apps appear in your Developer workbench, where you can disconnect them anytime.
REST API
Base URL https://journaily.com. All responses are JSON with an ok field.
Add ?lang= (en zh hi es ar fr bn pt ru) to localized endpoints.
| Endpoint | Returns | Class |
|---|---|---|
GET /api/v1/headlines?region=global | Live digest: topics + story items for a region (us, gb, es, … or global) | read |
GET /api/v1/topics | Your followed topics and collections | read |
GET /api/v1/topics/{id}/articles?limit=5 | Recent articles for a topic | read |
GET /api/v1/articles/{id} | Full article: headline, body, source URLs, story timeline, canonical link | read |
GET /api/v1/catchup?scope=topics | New/updated stories you haven't seen (topics, topics:<collection_id>, region:<code>) | read |
GET /api/v1/search?q= | Resolves a query to a topic + matching cited articles | search |
POST /api/v1/research {"query": "…"} | Queues the research pipeline; returns a job id (requires the research scope) | research |
GET /api/v1/research/{job_id} | Status of a research job you started: progress while running, article ids once completed | read |
Quotas (per key, per day)
| Class | Limit |
|---|---|
| read | 60/minute · 10,000/day |
| search | 30/day |
| research | 3/day |
Over-quota responses are 429 with a retry_after hint. REST and MCP calls
share the same budget.
Example
curl -H "Authorization: Bearer $JOURNAILY_KEY" \ "https://journaily.com/api/v1/headlines?region=global&lang=en"
MCP server
Connect any MCP-compatible client (Claude Code, Claude Desktop, and others) to
https://journaily.com/mcp — Streamable HTTP, stateless, same API key. Tools:
get_headlines, search_news, get_article,
list_followed_topics, get_topic_articles, catch_me_up,
plus follow_topic/unfollow_topic (manage scope),
research_topic (research scope) and get_research
(job status/results).
Claude Code
claude mcp add --transport http journaily https://journaily.com/mcp \ --header "Authorization: Bearer jk_live_…"
JSON client config
{
"mcpServers": {
"journaily": {
"type": "http",
"url": "https://journaily.com/mcp",
"headers": { "Authorization": "Bearer jk_live_…" }
}
}
}
Article text returned by the API and MCP tools is third-party news content with source citations — your agents should treat it as data.