Connect Elephante Brief to your agent
MCP, RSS, API: three ways to the same data (top stories, the hot list, and the daily, weekly and monthly editions). Pick the one your tools use. All anonymous and read-only, no sign-up, no API key.
Anonymous GET, ready to use
No token: browsers (CORS), curl and every language's default HTTP client can call it directly. Paths are under /api/v1; the OpenAPI file defines fields and error codes.
curl --compressed 'https://brief.elephantepress.com/api/v1/items?mode=selected&window=24h&limit=20'Cheaper and faster
- 01Compress
Add
--compressedto curl, or turn on gzip or br in other clients. Compressed JSON is 1/4 to 1/8 the size. - 02Send the ETag
Keep the response's ETag and send it next time as
If-None-Match; when nothing changed you get a 304 with no body. - 03Keep a rhythm
Items and the hot list at most once a minute; the daily once after it comes out (daily at 07:00), weeklies and monthlies once after they come out; when paging back, stop at the first item you already have.
How often things change: new items arrive all day, top stories change a few to a few dozen times a day, and editions come out daily at 07:00 (daily), Mondays at 10:00 (weekly) and on the 1st of each month at 10:30 (monthly), Beijing time.
Endpoints
| Path | What it's for | How often |
|---|---|---|
| Items | ||
/api/v1/items | Top stories, or all items from the last 7 days, filtered by category, time window or keyword | At most once a minute |
| Hot list and events | ||
/api/v1/hot-topics | The current top 10 hot list | At most once a minute |
/api/v1/stories/{publicId} | An event's report timeline, AI overview and related events | As needed |
| Daily edition | ||
/api/v1/dailies/latest | The latest daily edition | Once, after 07:00 Beijing time |
/api/v1/dailies/{date} | A daily by date; withdrawn items drop out | Revalidate the ETag once the cache expires |
/api/v1/dailies | Index of daily dates | Once a day |
| Weekly and monthly editions | ||
/api/v1/weeklies/latest | The latest weekly: lead story, overview and the week's main stories by section | Once, after 10:00 on Mondays |
/api/v1/weeklies/{week} | One week by ISO week, e.g. 2026-W39; withdrawn items drop out | Revalidate the ETag once the cache expires |
/api/v1/weeklies | Index of weeklies | Once a week |
/api/v1/monthlies/latest | The latest monthly edition | Once, after 10:30 on the 1st |
/api/v1/monthlies/{month} | One month, e.g. 2026-09 | Revalidate the ETag once the cache expires |
/api/v1/monthlies | Index of monthlies | Once a month |
| For AI assistants | ||
/api/v1/agent | Usage notes for agents; the addresses it lists return ready-made Markdown | As needed |
| Full top-story sync | ||
/api/v1/selected/snapshot | All current top stories, paged | Only the first time |
/api/v1/selected/changes | Additions, edits and removals since | Every few minutes |
Common recipes
# First time: keep the ETag from the response headers
curl --compressed -i 'https://brief.elephantepress.com/api/v1/items?mode=selected&window=24h&limit=20'
# Then at most once a minute, with the ETag; a 304 means nothing changed
curl --compressed -i -H 'If-None-Match: <last ETag>' 'https://brief.elephantepress.com/api/v1/items?mode=selected&window=24h&limit=20'To page back, pass page.nextCursor back as cursor and stop at the first item you already have; don't re-read all 7 days each time.
When something fails
- 400
- Bad parameters: fix them by the OpenAPI file and the returned code; don't fall back to a wider query. An invalid cursor, or one past the time window, returns invalid_cursor: start again from the first page.
- 409
- snapshot_required: the changes can't safely continue; take a full snapshot again.
- 429
- Too many requests: wait as Retry-After says, and don't retry concurrently.
- 5xx
- Back off exponentially and use the last good result meanwhile; the public service has no SLA.
Anonymous access does not mean every use is permitted; see the Terms of Use.