Getting started
Your first request
No auth required. Anonymous requests are treated as free tier: 20 requests per day per IP, 7-day lookback. Get a key from your account page for a higher quota or 90-day history (Dev tier). Details in authentication.
curl https://divergence.news/api/v2/events?limit=3
You get back the three most contested events from the last week:
{
"data": [
{
"id": 14782,
"title": "Senate passes sweeping immigration bill amid partisan divide",
"category": "politics",
"divergence_score": 74,
"article_count": 9,
"time_ago": "4h ago",
"updated_at": "2026-04-18T14:02:00Z"
},
{ "id": 14779, "title": "...", "divergence_score": 68, ... },
{ "id": 14771, "title": "...", "divergence_score": 61, ... }
],
"meta": { "count": 3, "has_more": true, "next_cursor": "eyJzIjo2MSwiaSI6MTQ3NzF9" }
}
Embed sources and facts in one call
curl "https://divergence.news/api/v2/events/14782?embed=sources,facts"
Returns the same event with sources (one per outlet that covered it, including headline, framing, sentiment, byline, URL) and facts (the confirmed / claimed / disputed / omitted ledger).
Find the most contested economics stories today
curl "https://divergence.news/api/v2/divergence/economy?limit=5"
Find coverage gaps
Stories the left covered and the right ignored, or vice versa:
curl https://divergence.news/api/v2/divergence/gaps
Each result includes a gap object naming which side covered and which ignored, with counts.
What to read next
- Filtering - every query parameter on every list endpoint
- Pagination - the cursor model, why there are no page numbers
- Divergence score - how the number is computed