Connect AiTopNews to your agent
The 3 ways in (MCP · RSS · API) read the same data: picks, the hot ranking, daily, weekly and monthly. Choose the one your tool supports. All anonymous and read-only: no sign-up and no API key.
Anonymous GET, ready to use
No token; browser cross-origin requests, curl and any language's default HTTP client can call it. Paths start with /api/v1; fields and error codes are in OpenAPI .
curl --compressed 'https://aitopnews.wiki/api/v1/items?mode=selected&window=24h&limit=20'Filter by category
Add category to an items request to take one category only; leave it out for all. Items carry the same category values.
| Category | Request parameter |
|---|---|
| AI models | category=ai-models |
| AI products | category=ai-products |
| Industry | category=industry |
| Research | category=paper |
| Tutorials | category=tip |
| Opinion | category=opinion |
Cheap, and faster
- 01Turn on compression
Add --compressed to curl, or turn on gzip or br in other clients. Compressed JSON is a quarter to an eighth of its size.
- 02Send the ETag
Keep the ETag from the response and send If-None-Match next time; unchanged content answers 304 with no body.
- 03Fetch at the right pace
Items and the hot ranking at most once a minute; the daily once after every day at 08:00, the weekly and monthly once after each issue; when paging back, stop at the entry you already have.
How often content changes: items arrive all day, picks change a few dozen times a day, and the daily, weekly and monthly come out once each (Beijing time).
Endpoints
| Path | What it is for | How often |
|---|---|---|
| Items | ||
/api/v1/items | Picks or every item of the last 7 days, filterable by category, window and keyword | At most once a minute |
| Hot ranking and stories | ||
/api/v1/hot-topics | The current hot ranking, top 10 | At most once a minute |
/api/v1/stories/{publicId} | One event's timeline, AI digest and related events | When needed |
| Daily | ||
/api/v1/dailies/latest | The latest daily | Once after every day at 08:00 |
/api/v1/dailies/{date} | One date's daily; withdrawals remove citations | Check the ETag before use once the cache expires |
/api/v1/dailies | The daily date index | Once a day |
| Weekly and monthly | ||
/api/v1/weeklies/latest | The latest weekly: lead, overview and the week's highlights by section | Once after every Monday at 10:00 |
/api/v1/weeklies/{week} | One week, ISO such as 2026-W39; withdrawals remove citations | Check the ETag before use once the cache expires |
/api/v1/weeklies | The weekly index | Once a week |
/api/v1/monthlies/latest | The latest monthly | Once after on the 1st of each month at 10:30 |
/api/v1/monthlies/{month} | One month, such as 2026-09 | Check the ETag before use once the cache expires |
/api/v1/monthlies | The monthly index | Once a month |
| For AI assistants | ||
/api/v1/agent | Usage notes for agents; the addresses it lists return tidy Markdown | When needed |
| Full pick sync | ||
/api/v1/selected/snapshot | Every current pick, paged once | Only the first time |
/api/v1/selected/changes | New, changed and withdrawn picks after that | Every few minutes |
Common recipes
# First time: keep the ETag from the response headers\n# After that at most once a minute, sending the ETag; a 304 means unchanged\n
curl --compressed -i 'https://aitopnews.wiki/api/v1/items?mode=selected&window=24h&limit=20'
curl --compressed -i -H 'If-None-Match: <last ETag>' 'https://aitopnews.wiki/api/v1/items?mode=selected&window=24h&limit=20'To page back, pass page.nextCursor back as the cursor and stop at the entry you already have; do not re-page seven days every time.
When something goes wrong
- 400
- Wrong parameters: fix them as the OpenAPI and the returned code say; do not widen the query on your own. An invalid cursor or one outside the window returns invalid_cursor — start from the first page.
- 409
- snapshot_required: the increment cannot continue safely; take a fresh full snapshot.
- 429
- Too many requests: wait for Retry-After and do not retry concurrently.
- 5xx
- Back off exponentially and keep using the last good result; a public service promises no SLA.
Anonymous access is not a license for every use: see theTerms.