We use cookies to ensure you get the best experience on our website. Some of these cookies are provided by third parties. You are free to decide which categories you would like to permit and can withdraw this consent at any time (via cookie preferences link on the footer).
By accepting the necessary cookies, you agree to our privacy policy and terms of service, both located in the footer of the website.
Learn more on our terms of service and privacy policy.
Track a storyline, not a feed of articles. AskNews Storylines follows what the world is covering as it develops. Each storyline is one persistent object: the articles that cover it, from outlets across countries and languages, clustered together, with a new update written whenever the storyline develops.
Every update is written from a deliberately diverse set of sources, cites the articles it draws on, and comes as structured analytics an agent can act on: what is new, where sources contradict each other, how coverage and sentiment are moving, which people and organizations are involved, and what Reddit is saying.
API Storylines are served by the stories endpoints (GET /v1/stories, GET /v1/stories/{story_id}) and the stories scope. Each storyline is a Story object, and each of its developments an update.
Explore storylines in the AskNews WebUI, and see the full schema in the API reference.
prompt_articles) are chosen for diversity: at most one per outlet, sampled in proportion to the cluster's mix of source countries, so no single outlet or country sets the narrative. An update is only written when those articles span at least five different outlets, and its markdown_citations trace each claim back to the article it came from.sources_urls), source countries (countries_pct, where the outlets are based) and languages (languages_pct), so you can see how widely a storyline is covered and by whom, not just what is said about it.new_information from the background, lists key_takeaways, and surfaces contradictions: the claims the coverage does not agree on. It also rates the coverage's reporting_voice and how provocative it is, with a confidence score derived from the generation's token log probabilities (a measure of the model's certainty, not a probability that the update is true).n_articles), sentiment and rolling_sentiment, and Reddit sentiment. See whether a storyline is gaining or losing coverage, and whether the tone is shifting.relationships between them as a graph.Storylines are not Alerts. Alerts tell you when something happens. Storylines tell you what's happening, and how it got there. Alerts follow what you define: your query and schedule, delivered as a notification or report. Storylines are the record of what the world is covering: each storyline's history, what changed, and how its coverage is moving. Many teams use both: find a storyline in Storylines, then set an Alert for the developments that matter to them.
Storylines is built as an analytics layer for agentic workflows. Common uses include:
uuid, comes back on its own schedule, and reads only the new updates (update_uuids, new_information) instead of re-processing the coverage.contradictions), which countries and languages drive the coverage, and traces each claim to its article before it repeats it.The Story object is what the stories endpoints return: one storyline and everything aggregated about it. Fields include (but are not limited to):
A full representation of the Story object can be found in the API reference.
With the story.uuid you can always come back for the storyline's latest state. The aggregated fields (such as sentiment, n_articles and updates) grow as new coverage arrives:
Each storyline's updates holds its developments. Every update includes (but is not limited to):
A full representation of the update object can be found in the API reference.
AskNews filters include (but are not limited to):
obj_type="story" finds storylines by their most recent update. To search through every update, use obj_type="story_update" (optional)story.updates[].story field. Can be 'brackets', 'urls', or 'none'. Use 'urls' if you want to get the citations injected in markdown format (e.g. (AOL)[https://aol.com]), use 'brackets' to get citations injected as integers in square brackets (e.g. [1]) which correspond to the index in update.prompt_articles list. Use 'none' if you do not want any citations (optional).A full view of the available parameters is available in the API reference.
To get the technology and science storylines with the most coverage in North America, combine the category and continent filters and sort by coverage:
This prints the headlines of the most-covered technology storylines in North America from the past 24 hours. To control the time period, set start_timestamp and end_timestamp.
You can search storylines and their updates with natural language or keywords. For example, to find storylines that mention "TSLA" and were updated in the last 24 hours:
Or, for a semantic search on "Tesla's stock is sky-rocketing!" across every update as well as the latest:
Pass a story.uuid or an update.url_safe_title to get_story to retrieve one storyline with much higher limits for max_updates and max_articles. A story.uuid returns the storyline with its latest update; an update.url_safe_title returns the storyline with that update as its requested_update_uuid. An update.uuid is not a lookup key for one update: it returns the parent storyline's latest updates.
To get more than the latest update, pass max_updates (up to 10). By default the other updates come back condensed, to two prompt articles and no cluster; set condense_auxillary_updates=False to receive every update in full:
You can also set max_articles, and the number of Reddit threads with reddit.
A full view of the available parameters is available in the API reference.