Skip to content
FOR AGENTS

Connect Bad Influence to your agent

MCP, RSS, API all read the same top picks, trending stories and daily, weekly and monthly reports. Choose the method that fits your tools. Access is anonymous and read-only, with no sign-up or API key.

Service availableVersion 1.0.0Anonymous · read-only · no API key
REST API · 1.0.0

Anonymous GET, ready to use

No token required. Browsers, curl, and standard HTTP clients can call it. Paths start at /api/v1; see OpenAPI for fields and error codes.

Your first request
curl --compressed 'https://badinfluence.news/api/v1/items?mode=selected&window=24h&limit=20'

Fetch less, get results faster

  1. 01
    Use compression

    Add --compressed to curl, or enable gzip or br in other clients. Compressed JSON is about one quarter to one eighth the size.

  2. 02
    Send the ETag

    Save the response ETag and send it as If-None-Match next time. Unchanged content returns 304 with no body.

  3. 03
    Poll at the right pace

    Check news and Trending no more than once a minute. Check the daily after every day at 8:00 AM ET, and weekly and monthly after publication. Stop paging when you reach an item you already have.

New items arrive throughout the day, and picks change several times a day. The daily appears every day at 8:00 AM ET, weekly every Monday at 10:00 AM ET, and monthly on the 1st of every month at 10:30 AM ET.

API endpoints

PathWhat it doesHow often
News
/api/v1/itemsTop picks or all news from the past 7 days, filterable by category, time, and keywordAt most once a minute
Trending and stories
/api/v1/hot-topicsCurrent Trending top 10At most once a minute
/api/v1/stories/{publicId}A story's coverage timeline, AI overview, and related storiesAs needed
Daily
/api/v1/dailies/latestLatest daily issueOnce after every day at 8:00 AM ET
/api/v1/dailies/{date}Daily issue for a date; withdrawn content loses its referencesRecheck the ETag after cache expiry
/api/v1/dailiesDaily issue indexOnce a day
Weekly and monthly
/api/v1/weeklies/latestLatest weekly: lead story, overview, and grouped highlightsOnce after every Monday at 10:00 AM ET
/api/v1/weeklies/{week}Weekly issue for an ISO week such as 2026-W39; withdrawals remove referencesRecheck the ETag after cache expiry
/api/v1/weekliesWeekly issue indexOnce a week
/api/v1/monthlies/latestLatest monthly issueOnce after on the 1st of every month at 10:30 AM ET
/api/v1/monthlies/{month}Monthly issue for a month such as 2026-09Recheck the ETag after cache expiry
/api/v1/monthliesMonthly issue indexOnce a month
Model leaderboard
/api/v1/leaderboardRanked models on one board (board, limit): scores by domain, evaluation counts and pricesOnce a day
/api/v1/leaderboard/models/{slug}One model's score, rank and every evaluation result behind itOnce a day
Codex reset monitor
/api/v1/codex-resetStatus, last resets, 90-day counts and every event with its source postA few minutes
For AI assistants
/api/v1/agentAgent instructions and addresses returning organized English MarkdownAs needed
Full picks sync
/api/v1/selected/snapshotA paged snapshot of all current picksInitial sync only
/api/v1/selected/changesSubsequent additions, changes, and deselectionsEvery few minutes

Common uses

bash
# First request: save the ETag response header
curl --compressed -i 'https://badinfluence.news/api/v1/items?mode=selected&window=24h&limit=20'
# Then poll at most once a minute; 304 means no change
curl --compressed -i -H 'If-None-Match: <previous ETag>' 'https://badinfluence.news/api/v1/items?mode=selected&window=24h&limit=20'

To page backward, pass page.nextCursor as cursor. Stop when you reach an item you already have instead of refetching all 7 days.

If something goes wrong

400
Fix the parameters using OpenAPI and the returned code. An invalid or expired cursor returns invalid_cursor; start from page one.
409
snapshot_required: fetch a new full snapshot before resuming changes.
429
Too many requests: follow Retry-After and don't retry concurrently.
5xx
Back off exponentially and use the last successful result. This public service has no SLA.

Anonymous access does not grant permission for every use. See Terms of Use.