Menu
Sign inAccount

API

The feed is served by the same response the page itself reads. No key, read only.

Examples are not run from this page. Copy a complete example, or focus its code to scroll sideways.

Base URL

https://pulse.arevian.studio

Feed

GET/api/news

Stories ranked for the chosen window. Optional date bounds use chronological order instead.

Parameters

All feed parameters are optional. Omit them to use the defaults.

Parameters — /api/news
NameValuesDescription
window30m · 3h · 24h · 7d · 30dRanking window. Default: 24h.
topicai, tech, science, space, studioTopics separated by commas; omit for all four. studio marks Arevian's own posts.
langru · en · hySource languages, separated by commas.
mediarss · telegramPublisher feeds or Telegram channels, separated by commas.
from, toISO 8601 · 2026-10-13T00:00:00ZOptional date bounds with a timezone. A date bound switches results to chronological order.
word2–40 characters · up to 20 wordsComma-separated words. They expand the topic filter: a matching story can appear even if its topic is not selected.
limit1–60Number of results on a page. Default: 25.
offset0–300Results to skip. Default: 0. Increase by the page size to continue; deduplicate by id if version changes.
  • window

    Values
    30m · 3h · 24h · 7d · 30d
    Description
    Ranking window. Default: 24h.
  • topic

    Values
    ai, tech, science, space, studio
    Description
    Topics separated by commas; omit for all four. studio marks Arevian's own posts.
  • lang

    Values
    ru · en · hy
    Description
    Source languages, separated by commas.
  • media

    Values
    rss · telegram
    Description
    Publisher feeds or Telegram channels, separated by commas.
  • from, to

    Values
    ISO 8601 · 2026-10-13T00:00:00Z
    Description
    Optional date bounds with a timezone. A date bound switches results to chronological order.
  • word

    Values
    2–40 characters · up to 20 words
    Description
    Comma-separated words. They expand the topic filter: a matching story can appear even if its topic is not selected.
  • limit

    Values
    1–60
    Description
    Number of results on a page. Default: 25.
  • offset

    Values
    0–300
    Description
    Results to skip. Default: 0. Increase by the page size to continue; deduplicate by id if version changes.

Feed · cURL

curl --get \
  "https://pulse.arevian.studio/api/news" \
  --data-urlencode "window=24h" \
  --data-urlencode "topic=tech,ai" \
  --data-urlencode "lang=en" \
  --data-urlencode "limit=10"

Feed · URL

https://pulse.arevian.studio/api/news?window=24h&topic=tech,ai&lang=en&limit=10

Response format

Illustrative response shapes, not live results. An empty items array can be a successful response.

  • items — stories with id, title, summary, topics, publication times, source links and a score. Some fields may be null.
  • window, generated_at and offset describe this feed response; has_more indicates another page with the same filters.
  • version is the most recent recalculation timestamp, not a request parameter. Ranking can change between pages; compare versions and deduplicate by id.
  • Search returns query and items, without has_more or version.
GET /api/news · JSON

GET /api/news · JSON

{
  "window": "24h",
  "generated_at": "2026-10-13T10:00:00.000Z",
  "version": 0,
  "offset": 0,
  "has_more": false,
  "items": []
}

GET /api/news/search · JSON

GET /api/news/search · JSON

{
  "query": "Mars",
  "items": []
}

Errors and empty results

If the upstream request fails or rejects the parameters, the public feed endpoint returns HTTP 200 with degraded: true. Check that flag as well as the HTTP status; keep your last successful data and check the parameters before retrying.

GET /api/news · HTTP 200

{
  "items": [],
  "degraded": true
}

Search returns HTTP 200 with query and items. On an upstream failure, the response also contains degraded: true and is not cached. An empty items array without that flag is a successful empty result; keep only previous results for the same query and retry reading later.

GET /api/news/search · HTTP 200

{
  "query": "Mars",
  "items": [],
  "degraded": true
}

Also handle network failure and responses that are not JSON. Keep the last successful data and retry later; avoid a continuous retry loop.

Use and caching

  • Successful responses declare caching: the feed uses 30 seconds in the browser and 60 seconds for shared caches; search uses 60 seconds. Follow the cache headers.
  • Read with GET; OPTIONS handles the browser preflight. No key is needed, and cross-origin reading is allowed. Avoid continuous requests and retry loops.
  • The texts belong to the outlets. Source links should take the reader to the original publication.