openapi: 3.2.0
info:
title: Perigon News & Stories API
description: The Perigon API provides access to comprehensive news and web content data. To use the API, simply sign up for a Perigon Business Solutions account to obtain your API key. Your available features may vary based on your plan. See the Authentication section for details on how to use your API key.
contact:
name: Perigon Support
url: https://docs.perigon.io/
email: data@perigon.io
version: 1.0.0
servers:
- url: https://api.perigon.io
description: Generated server url
security:
- apiKeyAuth: []
tags:
- name: News & Stories
description: Endpoints for accessing news articles and stories
paths:
/v1/articles/all:
get:
tags:
- News & Stories
summary: All Articles
description: Search and filter all news articles available via the Perigon API. The result includes a list of individual articles that were matched to your specific criteria.
operationId: search-articles
parameters:
- name: q
in: query
description: String. Primary search query for filtering articles based on their title, description, and content. Supports Boolean operators (AND, OR, NOT), exact phrases with quotes, and wildcards (* and ?) for flexible searching.
required: false
schema:
type: string
- name: title
in: query
description: String. Search specifically within article headlines/titles. Supports Boolean operators, exact phrases with quotes, and wildcards for matching title variations.
required: false
schema:
type: string
- name: desc
in: query
description: String. Search within article description fields. Supports Boolean expressions, exact phrase matching with quotes, and wildcards for flexible pattern matching.
required: false
schema:
type: string
- name: content
in: query
description: String. Search within the full article body content. Supports Boolean logic, exact phrase matching with quotes, and wildcards for comprehensive content searching.
required: false
schema:
type: string
- name: summary
in: query
description: String. Search within article summary fields. Supports Boolean expressions, exact phrase matching with quotes, and wildcards for flexible pattern matching.
required: false
schema:
type: string
- name: url
in: query
description: String. Search query on the url field. Semantic similar to q parameter. E.g. could be used for querying certain website sections, e.g. source=cnn.com&url=travel.
required: false
schema:
type: string
- name: articleId
in: query
description: String Array. Retrieve specific news articles by their unique article identifiers. Multiple IDs can be provided to return a collection of specific articles.
required: false
schema:
type: array
items:
type: string
- name: clusterId
in: query
description: String Array. Filter results to only show content within a specific related content cluster. Returns articles grouped together as part of Perigon Stories based on topic relevance.
required: false
schema:
type: array
items:
type: string
- name: sortBy
in: query
description: String. Determines the article sorting order. Options include relevance (default), date/pubDate (newest publication date first), reverseDate (oldest publication date first), addDate (newest ingestion date first), reverseAddDate (oldest ingestion date first), and refreshDate (most recently updated in system first, often identical to addDate).
required: false
schema:
$ref: '#/components/schemas/AllEndpointSortBy'
- name: page
in: query
description: Integer. The specific page of results to retrieve in the paginated response. Starts at 0.
required: false
schema:
maximum: 10000
minimum: 0
type: integer
format: int32
- name: size
in: query
description: Integer. The number of articles to return per page in the paginated response.
required: false
schema:
maximum: 1000
minimum: 0
type: integer
format: int32
- name: from
in: query
description: Date. Filter for articles published after this date. Accepts ISO 8601 format (e.g., 2023-03-01T00:00:00) or yyyy-mm-dd format.
required: false
schema:
type: string
format: date-time
- name: to
in: query
description: Date. Filter for articles published before this date. Accepts ISO 8601 format (e.g., 2022-02-01T23:59:59) or yyyy-mm-dd format.
required: false
schema:
type: string
format: date-time
- name: addDateFrom
in: query
description: Date. Filter for articles added to Perigon's system after this date. Accepts ISO 8601 format (e.g., 2022-02-01T00:00:00) or yyyy-mm-dd format.
required: false
schema:
type: string
format: date-time
- name: addDateTo
in: query
description: Date. Filter for articles added to Perigon's system before this date. Accepts ISO 8601 format (e.g., 2022-02-01T23:59:59) or yyyy-mm-dd format.
required: false
schema:
type: string
format: date-time
- name: refreshDateFrom
in: query
description: Date. Filter for articles refreshed/updated in Perigon's system after this date. In most cases yields similar results to addDateFrom but can differ for updated content. Accepts ISO 8601 format (e.g., 2022-02-01T00:00:00) or yyyy-mm-dd format.
required: false
schema:
type: string
format: date-time
- name: refreshDateTo
in: query
description: Date. Filter for articles refreshed/updated in Perigon's system before this date. In most cases yields similar results to addDateTo but can differ for updated content. Accepts ISO 8601 format (e.g., 2022-02-01T23:59:59) or yyyy-mm-dd format.
required: false
schema:
type: string
format: date-time
- name: medium
in: query
description: String Array. Filter articles by their primary medium type. Accepts Article for written content or Video for video-based stories. Multiple values create an OR filter.
required: false
schema:
type: array
items:
type: string
- name: source
in: query
description: String Array. Filter articles by specific publisher domains or subdomains. Supports wildcards (* and ?) for pattern matching (e.g., *.cnn.com). Multiple values create an OR filter.
required: false
schema:
type: array
items:
type: string
- name: sourceGroup
in: query
description: String Array. Filter articles using Perigon's curated publisher bundles (e.g., top100, top25crypto). Multiple values create an OR filter to include articles from any of the specified bundles.
required: false
schema:
type: array
items:
type: string
- name: excludeSourceGroup
in: query
description: String Array. Exclude articles from specified Perigon source groups. Multiple values create an AND-exclude filter, removing content from publishers in any of the specified bundles (e.g., top10, top100).
required: false
schema:
type: array
items:
type: string
- name: excludeSource
in: query
description: String Array. Exclude articles from specific publisher domains or subdomains. Supports wildcards (* and ?) for pattern matching (e.g., *.cnn.com). Multiple values create an AND-exclude filter.
required: false
schema:
type: array
items:
type: string
- name: watchlist
in: query
description: String Array. Filter articles using watchlists of people and companies. Multiple values create an OR filter to include articles mentioning any entity from the specified watchlists.
required: false
schema:
type: array
items:
type: string
- name: excludeWatchlist
in: query
description: String Array. Exclude articles mentioning entities from specified watchlists. Multiple values create an AND-exclude filter, removing content mentioning any entity from the specified watchlists.
required: false
schema:
type: array
items:
type: string
- name: paywall
in: query
description: Boolean. Filter to show only results where the source has a paywall (true) or does not have a paywall (false).
required: false
schema:
type: boolean
- name: byline
in: query
description: String Array. Filter articles by author bylines. Works as an exact match for each author name provided. Multiple values create an OR filter to find articles by any of the specified authors.
required: false
schema:
type: array
items:
type: string
- name: author
in: query
description: String Array. Filter articles by specific author names. Works as an exact match for each name. Multiple values create an OR filter to find articles by any of the specified authors.
required: false
schema:
type: array
items:
type: string
- name: excludeAuthor
in: query
description: String Array. Exclude articles written by specific authors. Any article with an author name matching an entry in this list will be omitted from results. Multiple values create an AND-exclude filter.
required: false
schema:
type: array
items:
type: string
- name: journalistId
in: query
description: String Array. Filter by unique journalist identifiers which can be found through the Journalist API or in the matchedAuthors field. Multiple values create an OR filter.
required: false
schema:
type: array
items:
type: string
- name: excludeJournalistId
in: query
description: String Array. Exclude articles written by specific journalists identified by their unique IDs. Multiple values create an AND-exclude filter.
required: false
schema:
type: array
items:
type: string
- name: language
in: query
description: String Array. Filter articles by their language using ISO-639 two-letter codes (e.g., en, es, fr). Multiple values create an OR filter.
required: false
schema:
type: array
items:
type: string
- name: excludeLanguage
in: query
description: String Array. Exclude articles in specific languages using ISO-639 two-letter codes. Multiple values create an AND-exclude filter.
required: false
schema:
type: array
items:
type: string
- name: searchTranslation
in: query
description: Boolean. Expand search to include translated content fields for non-English articles. When true, searches translated title, description, and content fields.
required: false
schema:
type: boolean
- name: label
in: query
description: String Array. Filter articles by editorial labels such as Opinion, Paid-news, Non-news, Fact Check, or Press Release. Multiple values create an OR filter.
required: false
schema:
type: array
items:
type: string
- name: excludeLabel
in: query
description: String Array. Exclude articles with specific editorial labels. Multiple values create an AND-exclude filter, removing all content with any of these labels.
required: false
schema:
type: array
items:
type: string
- name: category
in: query
description: 'String Array. Filter by categories. Categories are general themes that the article is about. Examples of categories: Tech, Politics, etc. If multiple parameters are passed, they will be applied as OR operations. Use ''none'' to search uncategorized articles.'
required: false
schema:
type: array
items:
type: string
- name: excludeCategory
in: query
description: String Array. Exclude articles with specific categories. Multiple values create an AND-exclude filter, removing all content with any of these categories.
required: false
schema:
type: array
items:
type: string
- name: topic
in: query
description: String Array. Filter by specific topics such as Markets, Crime, Cryptocurrency, or College Sports. Topics are more granular than categories, and articles can have multiple topics. Use the /topics endpoint for a complete list of available topics. Multiple values create an OR filter.
required: false
schema:
type: array
items:
type: string
- name: excludeTopic
in: query
description: String Array. Exclude articles with specific topics. Multiple values create an AND-exclude filter, removing all content with any of these topics.
required: false
schema:
type: array
items:
type: string
- name: linkTo
in: query
description: String. Returns only articles that contain links to the specified URL pattern. Matches against the 'links' field in article responses.
required: false
schema:
type: string
- name: showReprints
in: query
description: Boolean. Controls whether to include reprinted content in results. When true (default), shows syndicated articles from wire services like AP or Reuters that appear on multiple sites.
required: false
schema:
type: boolean
- name: reprintGroupId
in: query
description: String. Returns all articles in a specific reprint group, including the original article and all its known reprints. Use when you want to see all versions of the same content.
required: false
schema:
type: string
- name: city
in: query
description: String Array. Filters articles where a specified city plays a central role in the content, beyond mere mentions, to ensure the results are deeply relevant to the urban area in question. If multiple parameters are passed, they will be applied as OR operations.
required: false
schema:
type: array
items:
type: string
- name: excludeCity
in: query
description: String Array. A list of cities to exclude from the results. Articles that are associated with any of the specified cities will be filtered out.
required: false
schema:
type: array
items:
type: string
- name: area
in: query
description: String Array. Filters articles where a specified area, such as a neighborhood, borough, or district, plays a central role in the content, beyond mere mentions, to ensure the results are deeply relevant to the area in question. If multiple parameters are passed, they will be applied as OR operations.
required: false
schema:
type: array
items:
type: string
- name: state
in: query
description: String Array. Filters articles where a specified state plays a central role in the content, beyond mere mentions, to ensure the results are deeply relevant to the state in question. If multiple parameters are passed, they will be applied as OR operations.
required: false
schema:
type: array
items:
type: string
- name: excludeState
in: query
description: String Array. A list of states to exclude. Articles that include, or are associated with, any of the states provided here will be filtered out. This is especially useful if you want to ignore news tied to certain geographical areas (e.g., US states).
required: false
schema:
type: array
items:
type: string
- name: county
in: query
description: String Array. A list of counties to include (or specify) in the search results. This field filters the returned articles based on the county associated with the event or news. Only articles tagged with one of these counties will be included.
required: false
schema:
type: array
items:
type: string
- name: excludeCounty
in: query
description: String Array. Excludes articles from specific counties or administrative divisions in the search results. Accepts either a single county name or a list of county names. County names should match the format used in article metadata (e.g., 'Los Angeles County', 'Cook County'). This parameter allows for more granular geographic filter
required: false
schema:
type: array
items:
type: string
- name: locationsCountry
in: query
description: String Array. Filters articles where a specified country plays a central role in the content, beyond mere mentions, to ensure the results are deeply relevant to the country in question. If multiple parameters are passed, they will be applied as OR operations.
required: false
schema:
type: array
items:
type: string
- name: country
in: query
description: String Array. Country code to filter by country. If multiple parameters are passed, they will be applied as OR operations.
required: false
schema:
type: array
items:
type: string
- name: excludeLocationsCountry
in: query
description: String Array. Excludes articles where a specified country plays a central role in the content, ensuring results are not deeply relevant to the country in question. If multiple parameters are passed, they will be applied as AND operations, excluding articles relevant to any of the specified countries.
required: false
schema:
type: array
items:
type: string
- name: location
in: query
description: 'String Array. Return all articles that have the specified location. Location attributes are delimited by '':'' between key and value, and ''::'' between attributes. Example: ''city:New York::state:NY''.'
required: false
schema:
type: array
items:
type: string
- name: lat
in: query
description: Float. Latitude of the center point to search places
required: false
schema:
maximum: 90
minimum: -90
type: number
format: double
- name: lon
in: query
description: Float. Longitude of the center point to search places
required: false
schema:
maximum: 180
minimum: -180
type: number
format: double
- name: maxDistance
in: query
description: Float. Maximum distance (in km) from starting point to search articles by tagged places
required: false
schema:
maximum: 300
minimum: 1
type: number
format: double
- name: sourceCity
in: query
description: String Array. Find articles published by sources that are located within a given city.
required: false
schema:
type: array
items:
type: string
- name: excludeSourceCity
in: query
description: String Array. Excludes articles published by sources that are located within the specified cities.
required: false
schema:
type: array
items:
type: string
- name: sourceCounty
in: query
description: String Array. Find articles published by sources that are located within a given county.
required: false
schema:
type: array
items:
type: string
- name: excludeSourceCounty
in: query
description: String Array. Excludes articles published by sources that are located within the specified counties.
required: false
schema:
type: array
items:
type: string
- name: sourceCountry
in: query
description: String Array. Find articles published by sources that are located within a given country. Must be 2 character country code (i.e. us, gb, etc).
required: false
schema:
type: array
items:
type: string
- name: excludeSourceCountry
in: query
description: String Array. Excludes articles published by sources that are located within the specified countries. Must be 2 character country codes (e.g., us, gb).
required: false
schema:
type: array
items:
type: string
- name: sourceState
in: query
description: String Array. Find articles published by sources that are located within a given state.
required: false
schema:
type: array
items:
type: string
- name: excludeSourceState
in: query
description: String Array. Excludes articles published by sources that are located within the specified states.
required: false
schema:
type: array
items:
type: string
- name: sourceLat
in: query
description: Float. Latitude of the center point to search articles created by local publications.
required: false
schema:
maximum: 90
minimum: -90
type: number
format: double
- name: sourceLon
in: query
description: Float. Longitude of the center point to search articles created by local publications.
required: false
schema:
maximum: 180
minimum: -180
type: number
format: double
- name: sourceMaxDistance
in: query
description: Float. Maximum distance from starting point to search articles created by local publications.
required: false
schema:
maximum: 300
minimum: 1
type: number
format: double
- name: personWikidataId
in: query
description: String Array. Filter articles by Wikidata IDs of mentioned people. Refer to the /people endpoint for a complete list of tracked individuals.
required: false
schema:
type: array
items:
type: string
- name: excludePersonWikidataId
in: query
description: String Array. Exclude articles mentioning people with specific Wikidata IDs. Creates an AND-exclude filter to remove content about these individuals. Uses precise identifiers to avoid name ambiguity.
required: false
schema:
type: array
items:
type: string
- name: personName
in: query
description: String Array. Filter articles by exact person name matches. Does not support Boolean or complex logic. For available person entities, consult the /people endpoint.
required: false
schema:
type: array
items:
type: string
- name: excludePersonName
in: query
description: String Array. Exclude articles mentioning specific people by name. Creates an AND-exclude filter to remove content about these individuals.
required: false
schema:
type: array
items:
type: string
- name: companyId
in: query
description: String Array. Filter articles by company identifiers. For a complete list of tracked companies, refer to the /companies endpoint.
required: false
schema:
type: array
items:
type: string
- name: excludeCompanyId
in: query
description: String Array. Exclude articles mentioning companies with specific identifiers. Creates an AND-exclude filter to remove content about these corporate entities.
required: false
schema:
type: array
items:
type: string
- name: companyName
in: query
description: String. Filter articles by company name mentions. Performs an exact match on company names.
required: false
schema:
type: string
- name: companyDomain
in: query
description: String Array. Filter articles by company domains (e.g., apple.com). For available company entities, consult the /companies endpoint.
required: false
schema:
type: array
items:
type: string
- name: excludeCompanyDomain
in: query
description: String Array. Exclude articles related to companies with specific domains. Creates an AND-exclude filter to remove content about these companies.
required: false
schema:
type: array
items:
type: string
- name: companySymbol
in: query
description: String Array. Filter articles by company stock symbols. For available company entities and their symbols, consult the /companies endpoint.
required: false
schema:
type: array
items:
type: string
- name: companyIsin
in: query
description: String Array. Filter articles by company ISIN codes (International Securities Identification Numbers). For available company entities and their ISINs, consult the /companies endpoint.
required: false
schema:
maxItems: 300
minItems: 0
type: array
items:
type: string
- name: companySymbolIsin
in: query
description: String Array. Filter articles by ISIN codes on company ticker listings (symbols.isin). Distinct from companyIsin, which matches the company-level ISIN. For available company entities and their listing ISINs, consult the /companies endpoint.
required: false
schema:
maxItems: 300
minItems: 0
type: array
items:
type: string
- name: excludeCompanyIsin
in: query
description: String Array. Exclude articles related to companies with specific ISIN codes. Creates an AND-exclude filter to remove content about these companies. For available company entities and their ISINs, consult the /companies endpoint.
required: false
schema:
maxItems: 300
minItems: 0
type: array
items:
type: string
- name: excludeCompanySymbolIsin
in: query
description: String Array. Exclude articles related to companies whose ticker listings have these ISIN codes (symbols.isin). Distinct from excludeCompanyIsin, which matches the company-level ISIN. For available company entities and their listing ISINs, consult the /companies endpoint.
required: false
schema:
maxItems: 300
minItems: 0
type: array
items:
type: string
- name: excludeCompanySymbol
in: query
description: String Array. A list of stock symbols (ticker symbols) that identify companies to be excluded. Articles related to companies using any of these symbols will be omitted, which is useful for targeting or avoiding specific public companies.
required: false
schema:
type: array
items:
type: string
- name: showNumResults
in: query
description: Boolean. Whether to show the total number of all matched articles. Default value is false which makes queries a bit more efficient but also counts up to 10000 articles.
required: false
schema:
type: boolean
- name: positiveSentimentFrom
in: query
description: Float. Filter articles with a positive sentiment score greater than or equal to the specified value. Scores range from 0 to 1, with higher values indicating stronger positive tone.
required: false
schema:
type: number
format: float
- name: positiveSentimentTo
in: query
description: Float. Filter articles with a positive sentiment score less than or equal to the specified value. Scores range from 0 to 1, with higher values indicating stronger positive tone.
required: false
schema:
type: number
format: float
- name: neutralSentimentFrom
in: query
description: Float. Filter articles with a neutral sentiment score greater than or equal to the specified value. Scores range from 0 to 1, with higher values indicating stronger neutral tone.
required: false
schema:
type: number
format: float
- name: neutralSentimentTo
in: query
description: Float. Filter articles with a neutral sentiment score less than or equal to the specified value. Scores range from 0 to 1, with higher values indicating stronger neutral tone.
required: false
schema:
type: number
format: float
- name: negativeSentimentFrom
in: query
description: Float. Filter articles with a negative sentiment score greater than or equal to the specified value. Scores range from 0 to 1, with higher values indicating stronger negative tone.
required: false
schema:
type: number
format: float
- name: negativeSentimentTo
in: query
description: Float. Filter articles with a negative sentiment score less than or equal to the specified value. Scores range from 0 to 1, with higher values indicating stronger negative tone.
required: false
schema:
type: number
format: float
- name: taxonomy
in: query
description: 'String Array. Filters by Google Content Categories. This field will accept 1 or more categories, must pass the full name of the category. Example: taxonomy=/Finance/Banking/Other, /Finance/Investing/Funds. [Full list](https://docs.cloud.google.com/natural-language/docs/categories#version_2)'
required: false
schema:
type: array
items:
type: string
- name: prefixTaxonomy
in: query
description: 'String. Filters by Google Content Categories. This field will filter by the category prefix only. Example: prefixTaxonomy=/Finance'
required: false
schema:
type: string
- name: showHighlighting
in: query
description: Boolean. When set to true, enables text highlighting in search results.
required: false
schema:
type: boolean
- name: highlightFragmentSize
in: query
description: Integer. Specifies the size in characters of each highlighted text fragment. Defaults to 100 if not specified.
required: false
schema:
type: integer
format: int32
- name: highlightNumFragments
in: query
description: Integer. Controls the maximum number of highlighted fragments to return per field.
required: false
schema:
type: integer
format: int32
- name: highlightPreTag
in: query
description: String. Defines the HTML tag that appears before highlighted text. Defaults to '' if not specified.
required: false
schema:
type: string
- name: highlightPostTag
in: query
description: String. Defines the HTML tag that appears after highlighted text. Defaults to '' if not specified.
required: false
schema:
type: string
- name: highlightQ
in: query
description: 'String. Specifies a separate query for highlighting, allowing highlights based on terms different from the main search query. Example: main query ''q=climate change'' with ''highlightQ=renewable OR solar'' will highlight terms ''renewable'' and ''solar'' in results about climate change.'
required: false
schema:
type: string
responses:
'401':
description: 401 - Invalid API Key
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
status: 401
message: Invalid API key.
timestamp: 1681338367402
'200':
description: 200 - Success
content:
application/json:
schema:
$ref: '#/components/schemas/QuerySearchResult'
'500':
description: 500 - Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
status: 500
message: Internal error. Please contact the support to resolve the problem. We apologize for any inconvenience :)
timestamp: 1681338367402
'400':
description: 400 - Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
status: 400
message: Errors during parameter validation.
timestamp: 1681338367402
'403':
description: 403 - Request Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
status: 403
message: The number of allowed requests is exceeded.
timestamp: 1681338367402
'429':
description: 429 - Too Many Requests
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
status: 429
message: Exceeded request rate limit for your account.
timestamp: 1681338367402
security:
- apiKeyAuth: []
/v1/articles/refresh/jobs:
post:
tags:
- News & Stories
summary: Submit an article refresh job
description: Submits article ids for background refresh. Articles resolvable from a fresh cache are returned immediately; the rest are scheduled for processing. Poll the job status endpoint for results.
operationId: submit-article-refresh-job
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ArticleRefreshSubmitRequest'
required: true
responses:
'401':
description: 401 - Invalid API Key
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
status: 401
message: Invalid API key.
timestamp: 1681338367402
'500':
description: 500 - Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
status: 500
message: Internal error. Please contact the support to resolve the problem. We apologize for any inconvenience :)
timestamp: 1681338367402
'404':
description: 404 - One or more article ids do not exist
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'400':
description: 400 - Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
status: 400
message: Errors during parameter validation.
timestamp: 1681338367402
'403':
description: 403 - Request Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
status: 403
message: The number of allowed requests is exceeded.
timestamp: 1681338367402
'200':
description: 200 - Success
content:
application/json:
schema:
$ref: '#/components/schemas/ArticleRefreshJobResponse'
'429':
description: 429 - Too Many Requests
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
status: 429
message: Exceeded request rate limit for your account.
timestamp: 1681338367402
security:
- apiKeyAuth: []
/v1/articles/refresh/jobs/{id}:
get:
tags:
- News & Stories
summary: Get article refresh job status
description: Returns the job status together with whatever per-article results have been computed so far. Results are immutable snapshots taken when each article was processed.
operationId: get-article-refresh-job
parameters:
- name: id
in: path
required: true
schema:
type: string
format: uuid
responses:
'401':
description: 401 - Invalid API Key
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
status: 401
message: Invalid API key.
timestamp: 1681338367402
'500':
description: 500 - Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
status: 500
message: Internal error. Please contact the support to resolve the problem. We apologize for any inconvenience :)
timestamp: 1681338367402
'404':
description: 404 - Job not found
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
'400':
description: 400 - Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
status: 400
message: Errors during parameter validation.
timestamp: 1681338367402
'403':
description: 403 - Request Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
status: 403
message: The number of allowed requests is exceeded.
timestamp: 1681338367402
'200':
description: 200 - Success
content:
application/json:
schema:
$ref: '#/components/schemas/ArticleRefreshJobResponse'
'429':
description: 429 - Too Many Requests
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
status: 429
message: Exceeded request rate limit for your account.
timestamp: 1681338367402
security:
- apiKeyAuth: []
/v1/articles/refresh/peek:
post:
tags:
- News & Stories
summary: Peek cached article refresh data
description: Returns whatever refreshed article data is already cached, on a best-effort basis, without scheduling any processing or creating a job.
operationId: peek-article-refresh
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ArticleRefreshSubmitRequest'
required: true
responses:
'401':
description: 401 - Invalid API Key
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
status: 401
message: Invalid API key.
timestamp: 1681338367402
'200':
description: 200 - Success
content:
application/json:
schema:
$ref: '#/components/schemas/ArticleRefreshPeekResponse'
'500':
description: 500 - Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
status: 500
message: Internal error. Please contact the support to resolve the problem. We apologize for any inconvenience :)
timestamp: 1681338367402
'400':
description: 400 - Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
status: 400
message: Errors during parameter validation.
timestamp: 1681338367402
'403':
description: 403 - Request Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
status: 403
message: The number of allowed requests is exceeded.
timestamp: 1681338367402
'429':
description: 429 - Too Many Requests
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
status: 429
message: Exceeded request rate limit for your account.
timestamp: 1681338367402
security:
- apiKeyAuth: []
/v1/stories/all:
get:
tags:
- News & Stories
summary: Stories
description: 'Track evolving narratives and top news headlines with the ''**Stories**'' endpoint — it returns structured clusters of related articles with summaries, key points, sentiment scores, and metadata on top people, companies, topics, countries, and categories. Use it to monitor how news stories develop over time, who and what they impact, and where they''re gaining traction globally.
Each story represents a cluster of related articles grouped during processing. Articles are assigned to a single story, identified by the `clusterId` field. Once a story reaches five articles, a story title is automatically generated based on its content. Stories update as new coverage is processed and key details evolve.
To fetch all articles within a specific story, query the `/articles/all` endpoint using the `clusterId` parameter.'
operationId: search-stories
parameters:
- name: q
in: query
description: String. Primary search query for filtering stories based on their name, summary, and key points. Supports Boolean operators (AND, OR, NOT), exact phrases with quotes, and wildcards (* and ?) for flexible searching.
required: false
schema:
type: string
- name: name
in: query
description: String. Search specifically within story names. Supports Boolean operators, exact phrases with quotes, and wildcards for matching name variations.
required: false
schema:
type: string
- name: clusterId
in: query
description: String Array. Filter to specific stories using their unique identifiers. Each clusterId represents a distinct story that groups related articles. Multiple values create an OR filter.
required: false
schema:
type: array
items:
type: string
- name: excludeClusterId
in: query
description: String Array. Excludes specific stories from the results by their unique identifiers. Use this parameter to filter out unwanted or previously seen stories.
required: false
schema:
type: array
items:
type: string
- name: sortBy
in: query
description: String. Determines the story sorting order. Options include createdAt (default, when stories first emerged), updatedAt (when stories received new articles, best for tracking developing events), relevance (best match to query), count (by unique article count), and totalCount (by total article count including reprints).
required: false
schema:
$ref: '#/components/schemas/ClustersListSortBy'
- name: page
in: query
description: Integer. The specific page of results to retrieve in the paginated response. Starts at 0.
required: false
schema:
maximum: 10000
minimum: 0
type: integer
format: int32
- name: size
in: query
description: Integer. The number of articles to return per page in the paginated response.
required: false
schema:
maximum: 100
minimum: 0
type: integer
format: int32
- name: from
in: query
description: Filter for stories created on or after this date. Accepts ISO 8601 or yyyy-mm-dd format.
required: false
schema:
type: string
format: date-time
- name: to
in: query
description: Filter for stories created on or before this date. Accepts ISO 8601 or yyyy-mm-dd format.
required: false
schema:
type: string
format: date-time
- name: initializedFrom
in: query
description: Filter for stories initialized on or after this date. A story is initialized when it becomes visible with generated story data.
required: false
schema:
type: string
format: date-time
- name: initializedTo
in: query
description: Filter for stories initialized on or before this date. A story is initialized when it becomes visible with generated story data.
required: false
schema:
type: string
format: date-time
- name: updatedFrom
in: query
description: Date. Filter for stories that received new articles after this date. Useful for tracking developing news events or evolving storylines.
required: false
schema:
type: string
format: date-time
- name: updatedTo
in: query
description: Date. Filter for stories that received new articles before this date. Useful for tracking developing news events or evolving storylines.
required: false
schema:
type: string
format: date-time
- name: topic
in: query
description: String Array. Filter stories by specific topics such as Markets, Crime, Cryptocurrency, or College Sports. Topics are more granular than categories, and stories can include multiple topics based on their constituent articles. Use the /topics endpoint for a complete list of available topics. Multiple values create an OR filter.
required: false
schema:
type: array
items:
type: string
- name: category
in: query
description: String Array. Filter stories by broad content categories such as Politics, Tech, Sports, Business, or Finance. Use 'none' to find uncategorized stories. Categories are derived from the articles within each story. Multiple values create an OR filter.
required: false
schema:
type: array
items:
type: string
- name: taxonomy
in: query
description: 'String Array. Filter stories by Google Content Categories. Must pass the full hierarchical path of the category. Example: taxonomy=/Finance/Banking/Other,/Finance/Investing/Funds. Stories are categorized based on their constituent articles. Multiple values create an OR filter.'
required: false
schema:
type: array
items:
type: string
- name: source
in: query
description: String Array. Filter stories that contain articles from specific publisher domains or subdomains. Supports wildcards (* and ?) for pattern matching (e.g., *.cnn.com). A story will match if it contains at least one article from any of the specified sources. Multiple values create an OR filter.
required: false
schema:
type: array
items:
type: string
- name: sourceGroup
in: query
description: String Array. Filter stories that contain articles from publishers in Perigon's curated bundles (e.g., top100, top25crypto). A story will match if it contains at least one article from any publisher in the specified bundles. Multiple values create an OR filter.
required: false
schema:
type: array
items:
type: string
- name: minUniqueSources
in: query
description: Integer. Specifies the minimum number of unique sources required for a story to appear in results. Higher values return more significant stories covered by multiple publications. Default is 3.
required: false
schema:
minimum: 1
type: integer
format: int32
- name: minSourceDiversity
in: query
description: Float. Minimum ratio of unique sources to unique articles (uniqueSources / uniqueCount). Filters out stories dominated by a single publisher. For example, a value of 0.05 requires at least 1 unique source per 20 articles. Not applied by default.
required: false
schema:
maximum: 1
minimum: 0
type: number
- name: personWikidataId
in: query
description: String Array. Filter stories by Wikidata IDs of top mentioned people. Returns stories where these individuals appear prominently. Refer to the /people endpoint for a complete list of tracked individuals.
required: false
schema:
type: array
items:
type: string
- name: personName
in: query
description: String. Filter stories by exact name matches of top mentioned people. Does not support Boolean or complex logic. For available person entities, consult the /people endpoint.
required: false
schema:
type: string
- name: companyId
in: query
description: String Array. Filter stories by identifiers of top mentioned companies. Returns stories where these companies appear prominently. For a complete list of tracked companies, refer to the /companies endpoint.
required: false
schema:
type: array
items:
type: string
- name: companyName
in: query
description: String. Filter stories by names of top mentioned companies. Performs an exact match on company names in the topCompanies field.
required: false
schema:
type: string
- name: companyDomain
in: query
description: String Array. Filter stories by domains of top mentioned companies (e.g., apple.com). Returns stories where companies with these domains appear prominently. For available company entities, consult the /companies endpoint.
required: false
schema:
type: array
items:
type: string
- name: companySymbol
in: query
description: String Array. Filter stories by stock symbols of top mentioned companies. Returns stories where companies with these symbols appear prominently. For available company entities and their symbols, consult the /companies endpoint.
required: false
schema:
type: array
items:
type: string
- name: companyIsin
in: query
description: String Array. Filter stories by ISIN codes of top mentioned companies (International Securities Identification Numbers). Returns stories where companies with these ISINs appear prominently. For available company entities and their ISINs, consult the /companies endpoint.
required: false
schema:
maxItems: 300
minItems: 0
type: array
items:
type: string
- name: companySymbolIsin
in: query
description: String Array. Filter stories by ISIN codes on ticker listings of top mentioned companies (symbols.isin). Distinct from companyIsin, which matches the company-level ISIN. Returns stories where those companies appear prominently. For available company entities and their listing ISINs, consult the /companies endpoint.
required: false
schema:
maxItems: 300
minItems: 0
type: array
items:
type: string
- name: country
in: query
description: String Array. Country code to filter by country. If multiple parameters are passed, they will be applied as OR operations.
required: false
schema:
type: array
items:
type: string
- name: state
in: query
description: String Array. Filter local news by state. Applies only to local news, when this param is passed non-local news will not be returned. If multiple parameters are passed, they will be applied as OR operations.
required: false
schema:
type: array
items:
type: string
- name: city
in: query
description: String Array. Filter local news by city. Applies only to local news, when this param is passed non-local news will not be returned. If multiple parameters are passed, they will be applied as OR operations.
required: false
schema:
type: array
items:
type: string
- name: area
in: query
description: String Array. Filter local news by area. Applies only to local news, when this param is passed non-local news will not be returned. If multiple parameters are passed, they will be applied as OR operations.
required: false
schema:
type: array
items:
type: string
- name: minClusterSize
in: query
description: Integer. Filter by minimum cluster size. Minimum cluster size filter applies to number of unique articles.
required: false
schema:
minimum: 1
type: integer
format: int32
- name: maxClusterSize
in: query
description: Integer. Filter by maximum cluster size. Maximum cluster size filter applies to number of unique articles in the cluster.
required: false
schema:
type: integer
format: int32
- name: nameExists
in: query
description: Boolean. Filter to only include stories that have been assigned names. Defaults to true. Note that stories only receive names after they contain at least 5 unique articles.
required: false
schema:
type: boolean
- name: positiveSentimentFrom
in: query
description: Filter stories with an aggregate positive sentiment score greater than or equal to the specified value. Scores range from 0 to 1, with higher values indicating stronger positive tone.
required: false
schema:
type: number
format: float
- name: positiveSentimentTo
in: query
description: Filter stories with an aggregate positive sentiment score less than or equal to the specified value. Scores range from 0 to 1, with higher values indicating stronger positive tone.
required: false
schema:
type: number
format: float
- name: neutralSentimentFrom
in: query
description: Filter stories with an aggregate neutral sentiment score greater than or equal to the specified value. Scores range from 0 to 1, with higher values indicating stronger neutral tone.
required: false
schema:
type: number
format: float
- name: neutralSentimentTo
in: query
description: Filter stories with an aggregate neutral sentiment score less than or equal to the specified value. Scores range from 0 to 1, with higher values indicating stronger neutral tone.
required: false
schema:
type: number
format: float
- name: negativeSentimentFrom
in: query
description: Filter stories with an aggregate negative sentiment score greater than or equal to the specified value. Scores range from 0 to 1, with higher values indicating stronger negative tone.
required: false
schema:
type: number
format: float
- name: negativeSentimentTo
in: query
description: Filter stories with an aggregate negative sentiment score less than or equal to the specified value. Scores range from 0 to 1, with higher values indicating stronger negative tone.
required: false
schema:
type: number
format: float
- name: showStoryPageInfo
in: query
description: Boolean.
required: false
schema:
type: boolean
- name: showNumResults
in: query
description: Boolean. Show total number of results. By default set to false, will cap result count at 10000.
required: false
schema:
type: boolean
- name: showDuplicates
in: query
description: Boolean. Stories are deduplicated by default. If a story is deduplicated, all future articles are merged into the original story. duplicateOf field contains the original cluster Id. When showDuplicates=true, all stories are shown.
required: false
schema:
type: boolean
- name: showHighlighting
in: query
description: Boolean. When set to true, enables text highlighting in search results.
required: false
schema:
type: boolean
- name: highlightFragmentSize
in: query
description: Integer. Specifies the size in characters of each highlighted text fragment. Defaults to 100 if not specified.
required: false
schema:
type: integer
format: int32
- name: highlightNumFragments
in: query
description: Integer. Controls the maximum number of highlighted fragments to return per field.
required: false
schema:
type: integer
format: int32
- name: highlightPreTag
in: query
description: String. Defines the HTML tag that appears before highlighted text. Defaults to '' if not specified.
required: false
schema:
type: string
- name: highlightPostTag
in: query
description: String. Defines the HTML tag that appears after highlighted text. Defaults to '' if not specified.
required: false
schema:
type: string
- name: highlightQ
in: query
description: 'String. Specifies a separate query for highlighting, allowing highlights based on terms different from the main search query. Example: main query ''q=climate change'' with ''highlightQ=renewable OR solar'' will highlight terms ''renewable'' and ''solar'' in results about climate change.'
required: false
schema:
type: string
- name: expandArticles
in: query
description: Boolean. Preview 5 articles from the cluster.
required: false
schema:
type: boolean
responses:
'401':
description: 401 - Invalid API Key
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
status: 401
message: Invalid API key.
timestamp: 1681338367402
'200':
description: 200 - Success
content:
application/json:
schema:
$ref: '#/components/schemas/StorySearchResult'
'500':
description: 500 - Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
status: 500
message: Internal error. Please contact the support to resolve the problem. We apologize for any inconvenience :)
timestamp: 1681338367402
'400':
description: 400 - Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
status: 400
message: Errors during parameter validation.
timestamp: 1681338367402
'403':
description: 403 - Request Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
status: 403
message: The number of allowed requests is exceeded.
timestamp: 1681338367402
'429':
description: 429 - Too Many Requests
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
status: 429
message: Exceeded request rate limit for your account.
timestamp: 1681338367402
security:
- apiKeyAuth: []
/v1/stories/history:
get:
tags:
- News & Stories
summary: Story History
description: Retrieve previous generated versions of stories and their evolving summaries, key points, questions, and changelogs.
operationId: get-story-history
parameters:
- name: clusterId
in: query
description: Filter history records by story cluster ID. Multiple values are combined with OR.
required: false
schema:
type: array
items:
type: string
- name: from
in: query
description: Filter for history records created on or after this date. Accepts ISO 8601 or yyyy-mm-dd format.
required: false
schema:
type: string
format: date-time
- name: to
in: query
description: Filter for history records created on or before this date. Accepts ISO 8601 or yyyy-mm-dd format.
required: false
schema:
type: string
format: date-time
- name: sortBy
in: query
description: Field used to sort history records in descending order. Accepts createdAt or triggeredAt and defaults to createdAt.
required: false
schema:
type: string
enum:
- createdAt
- triggeredAt
- name: page
in: query
description: Integer. Zero-based page number. From 0 to 10000. See the Pagination section for limitations.
required: false
schema:
maximum: 10000
minimum: 0
type: integer
format: int32
- name: size
in: query
description: Integer. Number of stories results per page, from 0 to 100.
required: false
schema:
maximum: 100
minimum: 0
type: integer
format: int32
- name: changelogExists
in: query
description: Filter by whether a history record contains a changelog. Use true to require one or false to require its absence.
required: false
schema:
type: boolean
responses:
'401':
description: 401 - Invalid API Key
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
status: 401
message: Invalid API key.
timestamp: 1681338367402
'200':
description: 200 - Success
content:
application/json:
schema:
$ref: '#/components/schemas/StoryHistoryResult'
'500':
description: 500 - Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
status: 500
message: Internal error. Please contact the support to resolve the problem. We apologize for any inconvenience :)
timestamp: 1681338367402
'400':
description: 400 - Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
status: 400
message: Errors during parameter validation.
timestamp: 1681338367402
'403':
description: 403 - Request Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
status: 403
message: The number of allowed requests is exceeded.
timestamp: 1681338367402
'429':
description: 429 - Too Many Requests
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
status: 429
message: Exceeded request rate limit for your account.
timestamp: 1681338367402
security:
- apiKeyAuth: []
/v1/stories/stats:
get:
tags:
- News & Stories
summary: Story Count Statistics
description: Count matching stories by their creation time. Results can be grouped by hour, day, week, or month and filtered by supported story attributes.
operationId: get-story-counts
parameters:
- name: q
in: query
description: String. Primary search query for filtering stories based on their name, summary, and key points. Supports Boolean operators (AND, OR, NOT), exact phrases with quotes, and wildcards (* and ?) for flexible searching.
required: false
schema:
type: string
- name: name
in: query
description: String. Search specifically within story names. Supports Boolean operators, exact phrases with quotes, and wildcards for matching name variations.
required: false
schema:
type: string
- name: clusterId
in: query
description: String Array. Filter to specific stories using their unique identifiers. Each clusterId represents a distinct story that groups related articles. Multiple values create an OR filter.
required: false
schema:
type: array
items:
type: string
- name: excludeClusterId
in: query
description: String Array. Excludes specific stories from the results by their unique identifiers. Use this parameter to filter out unwanted or previously seen stories.
required: false
schema:
type: array
items:
type: string
- name: from
in: query
description: Filter for stories created on or after this date. Accepts ISO 8601 or yyyy-mm-dd format.
required: false
schema:
type: string
format: date-time
- name: to
in: query
description: Filter for stories created on or before this date. Accepts ISO 8601 or yyyy-mm-dd format.
required: false
schema:
type: string
format: date-time
- name: initializedFrom
in: query
description: Filter for stories initialized on or after this date. A story is initialized when it becomes visible with generated story data.
required: false
schema:
type: string
format: date-time
- name: initializedTo
in: query
description: Filter for stories initialized on or before this date. A story is initialized when it becomes visible with generated story data.
required: false
schema:
type: string
format: date-time
- name: updatedFrom
in: query
description: Date. Filter for stories that received new articles after this date. Useful for tracking developing news events or evolving storylines.
required: false
schema:
type: string
format: date-time
- name: updatedTo
in: query
description: Date. Filter for stories that received new articles before this date. Useful for tracking developing news events or evolving storylines.
required: false
schema:
type: string
format: date-time
- name: topic
in: query
description: String Array. Filter stories by specific topics such as Markets, Crime, Cryptocurrency, or College Sports. Topics are more granular than categories, and stories can include multiple topics based on their constituent articles. Use the /topics endpoint for a complete list of available topics. Multiple values create an OR filter.
required: false
schema:
type: array
items:
type: string
- name: category
in: query
description: String Array. Filter stories by broad content categories such as Politics, Tech, Sports, Business, or Finance. Use 'none' to find uncategorized stories. Categories are derived from the articles within each story. Multiple values create an OR filter.
required: false
schema:
type: array
items:
type: string
- name: taxonomy
in: query
description: 'String Array. Filter stories by Google Content Categories. Must pass the full hierarchical path of the category. Example: taxonomy=/Finance/Banking/Other,/Finance/Investing/Funds. Stories are categorized based on their constituent articles. Multiple values create an OR filter.'
required: false
schema:
type: array
items:
type: string
- name: source
in: query
description: String Array. Filter stories that contain articles from specific publisher domains or subdomains. Supports wildcards (* and ?) for pattern matching (e.g., *.cnn.com). A story will match if it contains at least one article from any of the specified sources. Multiple values create an OR filter.
required: false
schema:
type: array
items:
type: string
- name: sourceGroup
in: query
description: String Array. Filter stories that contain articles from publishers in Perigon's curated bundles (e.g., top100, top25crypto). A story will match if it contains at least one article from any publisher in the specified bundles. Multiple values create an OR filter.
required: false
schema:
type: array
items:
type: string
- name: minUniqueSources
in: query
description: Integer. Specifies the minimum number of unique sources required for a story to appear in results. Higher values return more significant stories covered by multiple publications. Default is 3.
required: false
schema:
minimum: 1
type: integer
format: int32
- name: minSourceDiversity
in: query
description: Float. Minimum ratio of unique sources to unique articles (uniqueSources / uniqueCount). Filters out stories dominated by a single publisher. For example, a value of 0.05 requires at least 1 unique source per 20 articles. Not applied by default.
required: false
schema:
maximum: 1
minimum: 0
type: number
- name: personWikidataId
in: query
description: String Array. Filter stories by Wikidata IDs of top mentioned people. Returns stories where these individuals appear prominently. Refer to the /people endpoint for a complete list of tracked individuals.
required: false
schema:
type: array
items:
type: string
- name: personName
in: query
description: String. Filter stories by exact name matches of top mentioned people. Does not support Boolean or complex logic. For available person entities, consult the /people endpoint.
required: false
schema:
type: string
- name: companyId
in: query
description: String Array. Filter stories by identifiers of top mentioned companies. Returns stories where these companies appear prominently. For a complete list of tracked companies, refer to the /companies endpoint.
required: false
schema:
type: array
items:
type: string
- name: companyName
in: query
description: String. Filter stories by names of top mentioned companies. Performs an exact match on company names in the topCompanies field.
required: false
schema:
type: string
- name: companyDomain
in: query
description: String Array. Filter stories by domains of top mentioned companies (e.g., apple.com). Returns stories where companies with these domains appear prominently. For available company entities, consult the /companies endpoint.
required: false
schema:
type: array
items:
type: string
- name: companySymbol
in: query
description: String Array. Filter stories by stock symbols of top mentioned companies. Returns stories where companies with these symbols appear prominently. For available company entities and their symbols, consult the /companies endpoint.
required: false
schema:
type: array
items:
type: string
- name: companyIsin
in: query
description: String Array. Filter stories by ISIN codes of top mentioned companies (International Securities Identification Numbers). Returns stories where companies with these ISINs appear prominently. For available company entities and their ISINs, consult the /companies endpoint.
required: false
schema:
maxItems: 300
minItems: 0
type: array
items:
type: string
- name: companySymbolIsin
in: query
description: String Array. Filter stories by ISIN codes on ticker listings of top mentioned companies (symbols.isin). Distinct from companyIsin, which matches the company-level ISIN. Returns stories where those companies appear prominently. For available company entities and their listing ISINs, consult the /companies endpoint.
required: false
schema:
maxItems: 300
minItems: 0
type: array
items:
type: string
- name: country
in: query
description: String Array. Country code to filter by country. If multiple parameters are passed, they will be applied as OR operations.
required: false
schema:
type: array
items:
type: string
- name: state
in: query
description: String Array. Filter local news by state. Applies only to local news, when this param is passed non-local news will not be returned. If multiple parameters are passed, they will be applied as OR operations.
required: false
schema:
type: array
items:
type: string
- name: city
in: query
description: String Array. Filter local news by city. Applies only to local news, when this param is passed non-local news will not be returned. If multiple parameters are passed, they will be applied as OR operations.
required: false
schema:
type: array
items:
type: string
- name: area
in: query
description: String Array. Filter local news by area. Applies only to local news, when this param is passed non-local news will not be returned. If multiple parameters are passed, they will be applied as OR operations.
required: false
schema:
type: array
items:
type: string
- name: minClusterSize
in: query
description: Integer. Filter by minimum cluster size. Minimum cluster size filter applies to number of unique articles.
required: false
schema:
minimum: 1
type: integer
format: int32
- name: maxClusterSize
in: query
description: Integer. Filter by maximum cluster size. Maximum cluster size filter applies to number of unique articles in the cluster.
required: false
schema:
type: integer
format: int32
- name: nameExists
in: query
description: Boolean. Filter to only include stories that have been assigned names. Defaults to true. Note that stories only receive names after they contain at least 5 unique articles.
required: false
schema:
type: boolean
- name: positiveSentimentFrom
in: query
description: Filter stories with an aggregate positive sentiment score greater than or equal to the specified value. Scores range from 0 to 1, with higher values indicating stronger positive tone.
required: false
schema:
type: number
format: float
- name: positiveSentimentTo
in: query
description: Filter stories with an aggregate positive sentiment score less than or equal to the specified value. Scores range from 0 to 1, with higher values indicating stronger positive tone.
required: false
schema:
type: number
format: float
- name: neutralSentimentFrom
in: query
description: Filter stories with an aggregate neutral sentiment score greater than or equal to the specified value. Scores range from 0 to 1, with higher values indicating stronger neutral tone.
required: false
schema:
type: number
format: float
- name: neutralSentimentTo
in: query
description: Filter stories with an aggregate neutral sentiment score less than or equal to the specified value. Scores range from 0 to 1, with higher values indicating stronger neutral tone.
required: false
schema:
type: number
format: float
- name: negativeSentimentFrom
in: query
description: Filter stories with an aggregate negative sentiment score greater than or equal to the specified value. Scores range from 0 to 1, with higher values indicating stronger negative tone.
required: false
schema:
type: number
format: float
- name: negativeSentimentTo
in: query
description: Filter stories with an aggregate negative sentiment score less than or equal to the specified value. Scores range from 0 to 1, with higher values indicating stronger negative tone.
required: false
schema:
type: number
format: float
- name: showDuplicates
in: query
description: Boolean. Stories are deduplicated by default. If a story is deduplicated, all future articles are merged into the original story. duplicateOf field contains the original cluster Id. When showDuplicates=true, all stories are shown.
required: false
schema:
type: boolean
- name: splitBy
in: query
description: Time interval used to group story counts. Accepts hour, day, week, or month and defaults to month.
required: true
schema:
type: string
default: month
enum:
- hour
- day
- week
- month
responses:
'401':
description: 401 - Invalid API Key
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
status: 401
message: Invalid API key.
timestamp: 1681338367402
'500':
description: 500 - Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
status: 500
message: Internal error. Please contact the support to resolve the problem. We apologize for any inconvenience :)
timestamp: 1681338367402
'200':
description: 200 - Success
content:
application/json:
schema:
$ref: '#/components/schemas/StatResult'
example:
status: 200
results:
- date: '2025-07-01T00:00:00Z'
numResults: 78032
- date: '2025-08-01T00:00:00Z'
numResults: 24508
'400':
description: 400 - Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
status: 400
message: Errors during parameter validation.
timestamp: 1681338367402
'403':
description: 403 - Request Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
status: 403
message: The number of allowed requests is exceeded.
timestamp: 1681338367402
'429':
description: 429 - Too Many Requests
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
status: 429
message: Exceeded request rate limit for your account.
timestamp: 1681338367402
security:
- apiKeyAuth: []
/v1/vector/news/all:
post:
tags:
- News & Stories
summary: News (Vector)
description: Perform a natural language search over news articles from the past 6 months using semantic relevance. The result includes a list of articles most closely matched to your query intent.
operationId: vector-search-articles
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/ArticleSearchParams'
required: true
responses:
'401':
description: 401 - Invalid API Key
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
status: 401
message: Invalid API key.
timestamp: 1681338367402
'200':
description: 200 - Success
content:
application/json:
schema:
$ref: '#/components/schemas/ArticlesVectorSearchResult'
'500':
description: 500 - Server Error
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
status: 500
message: Internal error. Please contact the support to resolve the problem. We apologize for any inconvenience :)
timestamp: 1681338367402
'400':
description: 400 - Bad Request
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
status: 400
message: Errors during parameter validation.
timestamp: 1681338367402
'403':
description: 403 - Request Forbidden
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
status: 403
message: The number of allowed requests is exceeded.
timestamp: 1681338367402
'429':
description: 429 - Too Many Requests
content:
application/json:
schema:
$ref: '#/components/schemas/ErrorResponse'
example:
status: 429
message: Exceeded request rate limit for your account.
timestamp: 1681338367402
security:
- apiKeyAuth: []
components:
schemas:
LabelHolder:
type: object
properties:
name:
type:
- string
- 'null'
description: Editorial label assigned to the article.
description: Editorial labels assigned to the article.
ArticleSearchFilter:
type: object
properties:
articleId:
type:
- array
- 'null'
description: Filter by specific article identifiers. Accepts either a single ID or an array of IDs. Returns only articles matching these IDs.
example:
- ''
items:
type: string
clusterId:
type:
- array
- 'null'
description: Filter by specific story identifiers. Accepts either a single ID or an array of IDs. Returns only articles belonging to these stories.
example:
- ''
items:
type: string
source:
type:
- array
- 'null'
description: Filter articles by specific publisher domains or subdomains. Accepts either a single domain or an array of domains. Multiple values create an OR filter.
example:
- ''
items:
type: string
excludeSource:
type:
- array
- 'null'
description: Exclude articles from specific publisher domains or subdomains. Accepts either a single domain or an array of domains. Multiple values create an AND-exclude filter.
example:
- ''
items:
type: string
sourceGroup:
type:
- array
- 'null'
description: Filter articles using Perigon's curated publisher bundles (e.g., top100, top25tech). Accepts either a single source group or an array. Multiple values create an OR filter to include articles from any of the specified bundles.
example:
- ''
items:
type: string
language:
type:
- array
- 'null'
description: Filter articles by their language using ISO-639 two-letter codes in lowercase (e.g., en, es, fr). Accepts either a single language code or an array. Multiple values create an OR filter.
example:
- ''
items:
type: string
excludeLanguage:
type:
- array
- 'null'
description: Exclude articles in specific languages using ISO-639 two-letter codes in lowercase. Accepts either a single language code or an array. Multiple values create an AND-exclude filter.
example:
- ''
items:
type: string
label:
type:
- array
- 'null'
description: Filter articles by editorial labels such as Opinion, Paid-news, Non-news, Fact Check, or Press Release. View our docs for an exhaustive list of labels. Accepts either a single label or an array. Multiple values create an OR filter.
example:
- ''
items:
type: string
excludeLabel:
type:
- array
- 'null'
description: Exclude articles with specific editorial labels. Accepts either a single label or an array. Multiple values create an AND-exclude filter, removing all content with any of these labels.
example:
- ''
items:
type: string
taxonomy:
type:
- array
- 'null'
description: 'Filter by Google Content Categories. Must pass the full hierarchical path of the category. Accepts either a single path or an array. Example: taxonomy=/Finance/Banking/Other,/Finance/Investing/Funds. Multiple values create an OR filter.'
example:
- ''
items:
type: string
category:
type:
- array
- 'null'
description: Filter by broad content categories such as Politics, Tech, Sports, Business, or Finance. Accepts either a single category or an array. Use none to find uncategorized articles. Multiple values create an OR filter.
example:
- ''
items:
type: string
topic:
type:
- array
- 'null'
description: Filter by specific topics such as Markets, Crime, Cryptocurrency, or College Sports. Accepts either a single topic or an array. Topics are more granular than categories, and articles can have multiple topics. Multiple values create an OR filter.
example:
- ''
items:
type: string
excludeTopic:
type:
- array
- 'null'
description: Exclude articles with specific topics. Accepts either a single topic or an array. Multiple values create an AND-exclude filter, removing all content with any of these topics.
example:
- ''
items:
type: string
country:
type:
- array
- 'null'
description: Filter articles by countries they mention using two-letter country codes in lowercase (e.g., us, gb, jp). Accepts either a single country code or an array. Multiple values create an OR filter. See documentation for supported country codes.
example:
- ''
items:
type: string
excludeCountry:
type:
- array
- 'null'
description: Exclude articles from specific countries using two-letter country codes in lowercase. Accepts either a single country code or an array. Multiple values create an AND-exclude filter. See documentation for supported country codes.
example:
- ''
items:
type: string
locationsCountry:
type:
- array
- 'null'
description: Filter articles where specified countries play a central role in the content, not just mentioned. Uses two-letter country codes in lowercase. Accepts either a single country code or an array. Multiple values create an OR filter. See documentation for supported country codes.
example:
- ''
items:
type: string
excludeLocationsCountry:
type:
- array
- 'null'
description: Exclude articles where specified countries play a central role in the content. Accepts either a single country code or an array. Multiple values create an AND-exclude filter, removing articles focused on any of these countries. See documentation for supported country codes.
example:
- ''
items:
type: string
state:
type:
- array
- 'null'
description: Filter articles where specified states play a central role in the content. Accepts either a single state code or an array. Multiple values create an OR filter. Uses two-letter state codes in lowercase. See documentation for supported state codes.
example:
- ''
items:
type: string
excludeState:
type:
- array
- 'null'
description: Exclude articles where specified states play a central role. Accepts either a single state code or an array. Multiple values create an AND-exclude filter, removing articles focused on any of these states. See documentation for supported state codes.
example:
- ''
items:
type: string
county:
type:
- array
- 'null'
description: Filter articles that mention or are related to specific counties. Accepts either a single county name or an array. Multiple values create an OR filter. County names typically include the word 'County' (e.g., Los Angeles County).
example:
- ''
items:
type: string
excludeCounty:
type:
- array
- 'null'
description: Exclude articles that mention or are related to specific counties. Accepts either a single county name or an array. Multiple values create an AND-exclude filter. County names should match the format in article metadata (e.g., Los Angeles County, Cook County).
example:
- ''
items:
type: string
city:
type:
- array
- 'null'
description: Filter articles that mention or are related to specific cities. Accepts either a single city name or an array. Multiple values create an OR filter.
example:
- ''
items:
type: string
excludeCity:
type:
- array
- 'null'
description: Exclude articles that mention or are related to specific cities. Accepts either a single city name or an array. Multiple values create an AND-exclude filter.
example:
- ''
items:
type: string
sourceCountry:
type:
- array
- 'null'
description: Filter for articles from publishers based in specific countries. Accepts either a single country code or an array. Uses two-letter country codes in lowercase (e.g., us, gb). See documentation for supported country codes.
example:
- ''
items:
type: string
sourceState:
type:
- array
- 'null'
description: Filter for articles from publishers based in specific states or regions. Accepts either a single state code or an array. Uses two-letter state codes in lowercase. See documentation for supported state codes.
example:
- ''
items:
type: string
sourceCounty:
type:
- array
- 'null'
description: Filter for articles from publishers based in specific counties. Accepts either a single county name or an array. Multiple values create an OR filter.
example:
- ''
items:
type: string
sourceCity:
type:
- array
- 'null'
description: Filter for articles from publishers based in specific cities. Accepts either a single city name or an array. Multiple values create an OR filter.
example:
- ''
items:
type: string
coordinates:
allOf:
- $ref: '#/components/schemas/CoordinateFilter'
sourceCoordinates:
allOf:
- $ref: '#/components/schemas/CoordinateFilter'
companyId:
type:
- array
- 'null'
description: Filter articles by company identifiers. Accepts either a single ID or an array. Multiple values create an OR filter. For a complete list of tracked companies and their IDs, refer to the /companies endpoint.
example:
- ''
items:
type: string
excludeCompanyId:
type:
- array
- 'null'
description: Exclude articles mentioning companies with specific identifiers. Accepts either a single ID or an array. Multiple values create an AND-exclude filter. For a complete list of tracked companies and their IDs, refer to the /companies endpoint.
example:
- ''
items:
type: string
companyDomain:
type:
- array
- 'null'
description: Filter articles by company domains (e.g., apple.com). Accepts either a single domain or an array. Multiple values create an OR filter. For a complete list of tracked companies and their domains, refer to the /companies endpoint.
example:
- ''
items:
type: string
excludeCompanyDomain:
type:
- array
- 'null'
description: Exclude articles related to companies with specific domains. Accepts either a single domain or an array. Multiple values create an AND-exclude filter. For a complete list of tracked companies and their domains, refer to the /companies endpoint.
example:
- ''
items:
type: string
companySymbol:
type:
- array
- 'null'
description: Filter articles by company stock symbols (e.g., AAPL, MSFT). Accepts either a single symbol or an array. Multiple values create an OR filter. For a complete list of tracked companies and their symbols, refer to the /companies endpoint.
example:
- ''
items:
type: string
excludeCompanySymbol:
type:
- array
- 'null'
description: Exclude articles related to companies with specific stock symbols. Accepts either a single symbol or an array. Multiple values create an AND-exclude filter. For a complete list of tracked companies and their symbols, refer to the /companies endpoint.
example:
- ''
items:
type: string
companyName:
type:
- array
- 'null'
description: Filter articles by company name mentions. Accepts either a single name or an array. Performs exact matching on company names. Multiple values create an OR filter. For a complete list of tracked companies and their names, refer to the /companies endpoint.
example:
- ''
items:
type: string
personWikidataId:
type:
- array
- 'null'
description: Filter articles by Wikidata IDs of mentioned people. Accepts either a single ID or an array. Multiple values create an OR filter. For a complete list of tracked individuals and their Wikidata IDs, refer to the /people endpoint.
example:
- ''
items:
type: string
excludePersonWikidataId:
type:
- array
- 'null'
description: Exclude articles mentioning people with specific Wikidata IDs. Accepts either a single ID or an array. Multiple values create an AND-exclude filter. For a complete list of tracked individuals and their Wikidata IDs, refer to the /people endpoint.
example:
- ''
items:
type: string
personName:
type:
- array
- 'null'
description: Filter articles by exact person name matches. Accepts either a single name or an array. Does not support Boolean operators or wildcards. Multiple values create an OR filter. For a complete list of tracked individuals and their names, refer to the /people endpoint.
example:
- ''
items:
type: string
excludePersonName:
type:
- array
- 'null'
description: Exclude articles mentioning specific people by name. Accepts either a single name or an array. Multiple values create an AND-exclude filter. For a complete list of tracked individuals and their names, refer to the /people endpoint.
example:
- ''
items:
type: string
AND:
type:
- array
- 'null'
description: Adds additional AND filter objects. These objects must be of the same type as the original filter object and will be combined with the existing filter using the AND logical operator.
example:
- {}
items:
$ref: '#/components/schemas/ArticleSearchFilter'
OR:
type:
- array
- 'null'
description: Adds additional OR filter objects. These objects must be of the same type as the original filter object and will be combined with the existing filter using the OR logical operator.
example:
- {}
items:
$ref: '#/components/schemas/ArticleSearchFilter'
NOT:
type:
- array
- 'null'
description: A filter object for logical NOT operations
example:
- {}
items:
$ref: '#/components/schemas/ArticleSearchFilter'
description: Complex filter structure for article searches that supports nested logical operations (AND, OR, NOT) and multiple filtering criteria.
NewsCluster:
type: object
properties:
createdAt:
type:
- string
- 'null'
description: Date and time the story was created, in ISO 8601 format.
updatedAt:
type:
- string
- 'null'
description: Date and time the story was last updated, in ISO 8601 format.
initializedAt:
type:
- string
- 'null'
description: Date and time the story became initialized and visible, in ISO 8601 format.
id:
type:
- string
- 'null'
description: Unique identifier for the story cluster.
duplicateOf:
type:
- string
- 'null'
description: Identifier of the original story when this story is a duplicate.
slug:
type:
- string
- 'null'
description: URL-safe identifier for the story.
name:
type:
- string
- 'null'
description: Generated story title.
summary:
type:
- string
- 'null'
description: Generated story summary.
shortSummary:
type:
- string
- 'null'
description: Short generated story summary, when available.
summaryReferences:
type:
- array
- 'null'
description: Article IDs supporting the story summary.
items:
type: string
description: Article IDs supporting the story summary.
imageSource:
allOf:
- $ref: '#/components/schemas/SourceHolder'
imageUrl:
type:
- string
- 'null'
description: Primary image URL selected for the story.
keyPoints:
type:
- array
- 'null'
description: Key facts and developments identified in the story.
items:
$ref: '#/components/schemas/KeyPoint'
questions:
type:
- array
- 'null'
description: Questions and answers generated from the story content.
items:
$ref: '#/components/schemas/Question'
uniqueSources:
type:
- array
- 'null'
description: Distinct publisher domains represented in the story.
items:
type: string
description: Distinct publisher domains represented in the story.
selectedArticles:
type:
- array
- 'null'
description: Representative articles selected for the story.
items:
$ref: '#/components/schemas/Article'
sentiment:
allOf:
- $ref: '#/components/schemas/SentimentHolder'
uniqueCount:
type:
- integer
- 'null'
description: Number of unique articles in the story.
format: int32
reprintCount:
type:
- integer
- 'null'
description: Number of reprinted articles in the story.
format: int32
totalCount:
type:
- integer
- 'null'
description: Total article count including reprints.
format: int32
countries:
type:
- array
- 'null'
description: Countries associated with the story and their article counts.
items:
$ref: '#/components/schemas/RecordStatHolder'
topCountries:
type:
- array
- 'null'
description: Countries most strongly associated with the story.
items:
type: string
description: Countries most strongly associated with the story.
topics:
type:
- array
- 'null'
description: Topics associated with the story and their article counts.
items:
$ref: '#/components/schemas/RecordStatHolder'
topTopics:
type:
- array
- 'null'
description: Topics most strongly associated with the story.
items:
$ref: '#/components/schemas/TopicHolder'
categories:
type:
- array
- 'null'
description: Categories associated with the story and their article counts.
items:
$ref: '#/components/schemas/RecordStatHolder'
topCategories:
type:
- array
- 'null'
description: Categories most strongly associated with the story.
items:
$ref: '#/components/schemas/CategoryHolder'
taxonomies:
type:
- array
- 'null'
description: Google Content Categories associated with the story and their article counts.
items:
$ref: '#/components/schemas/RecordStatHolder'
topTaxonomies:
type:
- array
- 'null'
description: Google Content Categories most strongly associated with the story.
items:
$ref: '#/components/schemas/CategoryHolder'
people:
type:
- array
- 'null'
description: People associated with the story and their article counts.
items:
$ref: '#/components/schemas/PersonCount'
topPeople:
type:
- array
- 'null'
description: People most strongly associated with the story.
items:
$ref: '#/components/schemas/PersonHolder'
companies:
type:
- array
- 'null'
description: Companies associated with the story and their article counts.
items:
$ref: '#/components/schemas/CompanyCount'
topCompanies:
type:
- array
- 'null'
description: Companies most strongly associated with the story.
items:
$ref: '#/components/schemas/CompanyHolder'
locations:
type:
- array
- 'null'
description: Locations associated with the story and their article counts.
items:
$ref: '#/components/schemas/LocationCount'
topLocations:
type:
- array
- 'null'
description: Locations most strongly associated with the story.
items:
$ref: '#/components/schemas/LocationHolder'
highlights:
type:
- object
- 'null'
additionalProperties:
type: array
description: Matched text fragments grouped by story field.
items:
type: string
description: Matched text fragments grouped by story field.
description: Matched text fragments grouped by story field.
sourceDiversity:
type:
- number
- 'null'
description: Ratio of unique publisher domains to total articles in the story.
format: double
description: Expanded story cluster details, when requested and available.
SourceLocation:
type: object
properties:
country:
type:
- string
- 'null'
description: Country where the publisher is located.
state:
type:
- string
- 'null'
description: State or region where the publisher is located.
county:
type:
- string
- 'null'
description: County where the publisher is located.
city:
type:
- string
- 'null'
description: City where the publisher is located.
coordinates:
allOf:
- $ref: '#/components/schemas/Coordinate'
description: Geographic location of the publisher, when available.
ErrorResponse:
type: object
properties:
status:
type:
- integer
- 'null'
format: int32
message:
type:
- string
- 'null'
timestamp:
type:
- integer
- 'null'
format: int64
PersonHolder:
type: object
properties:
wikidataId:
type:
- string
- 'null'
description: Wikidata identifier for the person.
name:
type:
- string
- 'null'
description: Person name.
description: People most strongly associated with the story.
AllEndpointSortBy:
type: string
enum:
- relevance
- date
- reverseDate
- reverseAddDate
- addDate
- pubDate
- refreshDate
CoordinateFilter:
type: object
properties:
lat:
type:
- number
- 'null'
format: float
example: 0
lon:
type:
- number
- 'null'
format: float
example: 0
radius:
type:
- number
- 'null'
format: float
example: 0
description: Filter articles from publishers based at specific geographic locations. Uses latitude, longitude, and radius parameters to define a circular search area for publisher locations.
ArticleRefreshPeekResponse:
type: object
properties:
results:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/ArticleRefreshPeekResult'
PersonCount:
type: object
properties:
wikidataId:
type:
- string
- 'null'
description: Wikidata identifier for the person.
name:
type:
- string
- 'null'
description: Person name.
count:
type:
- integer
- 'null'
description: Number of story articles mentioning the person.
format: int32
description: People associated with the story and their article counts.
CompanyCount:
type: object
properties:
id:
type:
- string
- 'null'
description: Unique Perigon identifier for the company.
name:
type:
- string
- 'null'
description: Company name.
domains:
type:
- array
- 'null'
description: Domains associated with the company.
items:
type: string
description: Domains associated with the company.
symbols:
type:
- array
- 'null'
description: Stock symbols associated with the company.
items:
type: string
description: Stock symbols associated with the company.
count:
type:
- integer
- 'null'
description: Number of story articles mentioning the company.
format: int32
description: Companies associated with the story and their article counts.
ArticleRefreshPeekResult:
type: object
properties:
data:
allOf:
- $ref: '#/components/schemas/ArticleRefreshData'
fetchedAt:
type:
- string
- 'null'
format: date-time
validatedAt:
type:
- string
- 'null'
format: date-time
StoryHistoryResult:
required:
- numResults
- results
- status
type: object
properties:
status:
type: integer
description: HTTP status code for the response.
format: int32
numResults:
type: integer
description: Total number of matching history records.
format: int64
results:
type: array
description: History records returned for the requested page.
items:
$ref: '#/components/schemas/StoryHistoryRecord'
description: Story history result
example:
status: 200
numResults: 4530319
results:
- clusterId: 911860d569ca464698c0beec0697f694
createdAt: '2025-08-12T10:18:48.493128+00:00'
name: null
triggeredAt: '2025-08-12T10:17:41.249815+00:00'
summary: The Indian stock market experienced notable volatility and ended lower on August 12, with the Sensex dropping 368.49 points to 80,235.59 and the Nifty falling 97.65 points to 24,487.40, reversing early gains amid cautious investor sentiment ahead of key inflation data from India and the US. Financial and private banking sectors faced selling pressure, while auto, IT, and media sectors showed gains, supported by strong performances in large-cap stocks like Maruti Suzuki and Tech Mahindra. Market experts warned of potential overheating in the rally, especially in mid and small caps, urging investors to remain selective due to short-term uncertainties despite favorable long-term prospects. The broader market showed mixed movements, with smallcaps outperforming midcaps and a slight easing in market volatility as gauged by India VIX. Investors remained watchful of the July retail inflation print, expected to dip to a historic low of 1.4%, and global concerns over US tariffs adding to price pressures. Overall, the market's cautious stance reflects anticipation around inflation data and geopolitical events, including the Trump-Putin summit, amid mixed sector performances and ongoing foreign selling pressure.
shortSummary: Indian equity markets showed volatility with the Sensex and Nifty reversing early gains to close lower amid cautious investor sentiment ahead of key inflation data from India and the US. Financial and private banking sectors faced selling pressure while auto, IT, and media sectors outperformed, with mixed performances in mid and small caps as investors weigh global events including US tariffs and mutual fund inflows.
changelog: null
keyPoints:
- point: The IPO of Bluestone Jewelry and Lifestyle Limited (BJLL) opened on August 11, aiming to raise ₹1,540.65 crore, with listing scheduled for August 19 on BSE and NSE.
references:
- 574436fd177e4af5a166a439a5bc97a0
- point: Among the Sensex components, 17 shares settled in the red, with notable losers including Bajaj Finance, HUL, Trent, HDFC Bank, ICICI Bank, Kotak Bank, BEL, Bajaj Finserv, Adani Ports, and Asian Paints.
references:
- 574436fd177e4af5a166a439a5bc97a0
- point: Market breadth showed about 1,994 shares advanced, 1,889 declined, and 157 remained unchanged, indicating a mixed but slightly positive broader market.
references:
- 184a5f45336e4129b4e220d901abef10
- point: SBI report highlighted expectations that CPI inflation in India will remain below 3 percent until the third quarter of FY26, contributing to market volatility and cautious investor sentiment.
references:
- bed7d190e0b64f17aa1f77012bf634af
- point: Several stocks hit new 52-week highs and lows, with 23 stocks including Star Cement and Anand Rathi reaching 52-week highs, while 45 stocks including Bigbloc Construction and Praj Industries hit 52-week lows, reflecting uneven market performance.
references:
- bed7d190e0b64f17aa1f77012bf634af
questions: null
ArticleRefreshJobArticleResult:
type: object
properties:
articleId:
type:
- string
- 'null'
status:
type:
- string
- 'null'
enum:
- PENDING
- COMPLETED
- ERROR
data:
allOf:
- $ref: '#/components/schemas/ArticleRefreshData'
computedAt:
type:
- string
- 'null'
format: date-time
KeywordHolder:
type: object
properties:
name:
type:
- string
- 'null'
description: Keyword extracted from the article.
weight:
type:
- number
- 'null'
description: Relative relevance weight of the keyword.
format: float
description: Keywords extracted from the article with their relevance weights.
SourceHolder:
type: object
properties:
domain:
type:
- string
- 'null'
description: Publisher domain.
paywall:
type:
- boolean
- 'null'
description: Whether the publisher uses a paywall, when known.
location:
allOf:
- $ref: '#/components/schemas/SourceLocation'
description: Publisher information for the selected story image.
ArticleSearchParams:
required:
- prompt
type: object
properties:
prompt:
maxLength: 1024
minLength: 0
type: string
description: Natural language query to search the news articles database
example: Enter your prompt
filter:
allOf:
- $ref: '#/components/schemas/ArticleSearchFilter'
pubDateFrom:
type:
- string
- 'null'
description: '''pubDateFrom'' filter, will search articles published after the specified date, the date could be passed as ISO or ''yyyy-mm-dd''. Date time in ISO format, ie. 2024-01-01T00:00:00 - Default: Only articles with a pubDate within the last 30 days of the request'
format: date-time
example: '2024-01-01T00:00:00Z'
pubDateTo:
type:
- string
- 'null'
description: '''pubDateTo'' filter, will search articles published before the specified date, the date could be passed as ISO or ''yyyy-mm-dd''. Date time in ISO format, ie. 2024-01-01T00:00:00'
format: date-time
example: '2024-12-31T23:59:59Z'
showReprints:
type:
- boolean
- 'null'
description: Whether to return reprints in the response or not. Reprints are usually wired articles from sources like AP or Reuters that are reprinted in multiple sources at the same time. By default, this parameter is 'true'.
default: true
size:
maximum: 100
minimum: 1
type:
- integer
- 'null'
description: The number of items per page.
format: int32
default: 10
page:
maximum: 10000
minimum: 0
type:
- integer
- 'null'
description: The page number to retrieve.
format: int32
default: 0
VectorData:
type: object
properties:
data:
type:
- array
- 'null'
description: Numeric values in the vector embedding.
items:
type: number
description: Numeric values in the vector embedding.
format: float
version:
type:
- integer
- 'null'
description: Version of the embedding representation.
format: int32
description: Vector embeddings associated with the article, when requested.
IdNameHolder:
type: object
properties:
id:
type:
- string
- 'null'
description: Unique identifier for the matched record.
name:
type:
- string
- 'null'
description: Display name of the matched record.
description: Known journalist records matched to the article byline.
ArticleRefreshData:
type: object
properties:
articleId:
type:
- string
- 'null'
url:
type:
- string
- 'null'
authorsByline:
type:
- string
- 'null'
imageUrl:
type:
- string
- 'null'
country:
type:
- string
- 'null'
language:
type:
- string
- 'null'
pubDate:
type:
- string
- 'null'
title:
type:
- string
- 'null'
description:
type:
- string
- 'null'
content:
type:
- string
- 'null'
source:
allOf:
- $ref: '#/components/schemas/SourceHolder'
links:
type:
- array
- 'null'
items:
type: string
medium:
type:
- string
- 'null'
claim:
type:
- string
- 'null'
verdict:
type:
- string
- 'null'
translation:
type:
- string
- 'null'
translatedTitle:
type:
- string
- 'null'
translatedDescription:
type:
- string
- 'null'
entities:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/EntityHolder'
people:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/PersonHolder'
companies:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/CompanyHolder'
matchedAuthors:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/IdNameHolder'
Question:
type: object
properties:
question:
type:
- string
- 'null'
description: Question generated from the story content.
answer:
type:
- string
- 'null'
description: Answer generated from the story content.
references:
type:
- array
- 'null'
description: Article IDs supporting the answer.
items:
type: string
description: Article IDs supporting the answer.
description: Questions and answers generated from the story content.
LocationHolder:
type: object
properties:
country:
type:
- string
- 'null'
description: Country central to the article.
state:
type:
- string
- 'null'
description: State or region central to the article.
county:
type:
- string
- 'null'
description: County central to the article.
city:
type:
- string
- 'null'
description: City central to the article.
area:
type:
- string
- 'null'
description: Neighborhood, borough, or district central to the article.
description: Locations most strongly associated with the story.
RecordStatHolder:
type: object
properties:
name:
type:
- string
- 'null'
description: Name of the aggregated value.
count:
type:
- integer
- 'null'
description: Number of matching articles for the value.
format: int32
description: Google Content Categories associated with the story and their article counts.
NameCount:
type: object
properties:
name:
type:
- string
- 'null'
description: Name of the aggregated value.
count:
type:
- integer
- 'null'
description: Number of matching records for the value.
format: int64
description: Countries most frequently associated with the journalist's articles.
TopicHolder:
type: object
properties:
name:
type:
- string
- 'null'
description: Topic assigned to the article.
description: Topics most strongly associated with the story.
StatResult:
type: object
properties:
status:
type:
- integer
- 'null'
description: HTTP status code for the response.
format: int32
results:
type:
- array
- 'null'
description: Statistics returned by the request.
items:
type: object
description: Statistics returned by the request.
numResults:
type:
- integer
- 'null'
description: Total number of matching records, when calculated by the endpoint.
format: int64
StoryHistoryRecord:
type: object
properties:
clusterId:
type:
- string
- 'null'
description: Unique identifier of the story associated with this history record.
createdAt:
type:
- string
- 'null'
description: Date and time the history record was created, in ISO 8601 format.
name:
type:
- string
- 'null'
description: Story name captured in this history record, when available.
triggeredAt:
type:
- string
- 'null'
description: Date and time the story refresh that produced this record was triggered, in ISO 8601 format.
summary:
type:
- string
- 'null'
description: Story summary captured in this history record.
shortSummary:
type:
- string
- 'null'
description: Short story summary captured in this history record, when available.
changelog:
type:
- string
- 'null'
description: Description of changes from the previous story version, when available.
keyPoints:
type:
- array
- 'null'
description: Key points captured for this version of the story.
items:
$ref: '#/components/schemas/KeyPoint'
questions:
type:
- array
- 'null'
description: Questions and answers generated for this version of the story.
items:
$ref: '#/components/schemas/Question'
description: History records returned for the requested page.
LocationCount:
type: object
properties:
country:
type:
- string
- 'null'
description: Country associated with the story.
state:
type:
- string
- 'null'
description: State or region associated with the story.
county:
type:
- string
- 'null'
description: County associated with the story.
city:
type:
- string
- 'null'
description: City associated with the story.
area:
type:
- string
- 'null'
description: Neighborhood, borough, or district associated with the story.
count:
type:
- integer
- 'null'
description: Number of story articles associated with the location.
format: int32
description: Locations associated with the story and their article counts.
ScoredDataArticle:
type: object
properties:
score:
type:
- number
- 'null'
format: float
data:
allOf:
- $ref: '#/components/schemas/Article'
vectors:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/VectorData'
CompanyHolder:
type: object
properties:
id:
type:
- string
- 'null'
description: Unique Perigon identifier for the company.
name:
type:
- string
- 'null'
description: Company name.
domains:
type:
- array
- 'null'
description: Domains associated with the company.
items:
type: string
description: Domains associated with the company.
symbols:
type:
- array
- 'null'
description: Stock symbols associated with the company.
items:
type: string
description: Stock symbols associated with the company.
description: Companies most strongly associated with the story.
ClustersListSortBy:
type: string
enum:
- createdAt
- updatedAt
- relevance
- count
- totalCount
CategoryHolder:
type: object
properties:
name:
type:
- string
- 'null'
description: Content category assigned to the article.
description: Google Content Categories most strongly associated with the story.
ArticleRefreshSubmitRequest:
required:
- articleIds
type: object
properties:
articleIds:
maxItems: 100
minItems: 0
type: array
items:
type: string
Journalist:
type: object
properties:
id:
type:
- string
- 'null'
description: Unique Perigon identifier for the journalist.
primaryRecordId:
type:
- string
- 'null'
name:
type:
- string
- 'null'
description: Common display name of the journalist.
fullName:
type:
- string
- 'null'
description: Full name of the journalist.
headline:
type:
- string
- 'null'
description: Professional headline associated with the journalist.
description:
type:
- string
- 'null'
description: Biographical description of the journalist.
title:
type:
- string
- 'null'
description: Professional title of the journalist.
email:
type:
- string
- 'null'
description: Journalist's email.
locations:
type:
- array
- 'null'
description: Locations associated with the journalist.
items:
$ref: '#/components/schemas/LocationHolder'
updatedAt:
type:
- string
- 'null'
description: Date and time the journalist record was last refreshed, in ISO 8601 format.
topTopics:
type:
- array
- 'null'
description: Topics most frequently covered by the journalist.
items:
$ref: '#/components/schemas/NameCount'
topSources:
type:
- array
- 'null'
description: Publishers most frequently associated with the journalist.
items:
$ref: '#/components/schemas/NameCount'
topCategories:
type:
- array
- 'null'
description: Categories most frequently covered by the journalist.
items:
$ref: '#/components/schemas/NameCount'
topLabels:
type:
- array
- 'null'
description: Editorial labels most frequently associated with the journalist's articles.
items:
$ref: '#/components/schemas/NameCount'
topCountries:
type:
- array
- 'null'
description: Countries most frequently associated with the journalist's articles.
items:
$ref: '#/components/schemas/NameCount'
avgMonthlyPosts:
type:
- integer
- 'null'
description: Average number of articles published by the journalist per month.
format: int32
twitterHandle:
type:
- string
- 'null'
description: Journalist's X or Twitter handle.
twitterBio:
type:
- string
- 'null'
description: Biography from the journalist's X or Twitter profile.
imageUrl:
type:
- string
- 'null'
description: Profile image URL for the journalist.
linkedinUrl:
type:
- string
- 'null'
description: LinkedIn profile URL for the journalist.
linkedinConnections:
type:
- integer
- 'null'
description: LinkedIn connection count for the journalist, when available.
format: int32
linkedinFollowers:
type:
- integer
- 'null'
description: LinkedIn follower count for the journalist, when available.
format: int32
facebookUrl:
type:
- string
- 'null'
description: Facebook profile URL for the journalist.
instagramUrl:
type:
- string
- 'null'
description: Instagram profile URL for the journalist.
websiteUrl:
type:
- string
- 'null'
description: Personal or professional website URL for the journalist.
blogUrl:
type:
- string
- 'null'
description: Blog URL for the journalist.
tumblrUrl:
type:
- string
- 'null'
description: Tumblr profile URL for the journalist.
youtubeUrl:
type:
- string
- 'null'
description: YouTube channel URL for the journalist.
description: Expanded journalist details, when requested and available.
SentimentHolder:
type: object
properties:
positive:
type:
- number
- 'null'
description: Positive sentiment score from 0 to 1.
format: float
negative:
type:
- number
- 'null'
description: Negative sentiment score from 0 to 1.
format: float
neutral:
type:
- number
- 'null'
description: Neutral sentiment score from 0 to 1.
format: float
description: Aggregate sentiment scores for the story.
ArticlesVectorSearchResult:
required:
- results
- status
type: object
properties:
status:
type: integer
format: int32
results:
type: array
items:
$ref: '#/components/schemas/ScoredDataArticle'
description: Articles vector search result
example:
status: 200
results:
- score: 0.6707077
data:
articleId: be5db1909bb94e0e953c0537d80d1728
clusterId: 85246d2dfb784a66a70946c382000615
url: https://woai.iheart.com/content/2025-07-30-tesla-samsung-select-texas-town-as-new-hub-for-ai-chip-manufacturing/
authorsByline: ''
matchedAuthors: []
imageUrl: https://i.iheart.com/v3/re/assets.getty/64d0f5da53634efa19c55bbb?ops=gravity(%22north%22),fit(1200,675),quality(65)
pubDate: '2025-07-31T08:30:00Z'
addDate: '2025-07-31T08:37:17.593902Z'
language: en
source:
domain: woai.iheart.com
location:
country: us
state: AZ
county: Pima County
city: Tucson
coordinates:
lat: 32.1988848
lon: -110.8218543
country: us
reprint: false
reprintGroupId: ab5901166eff4e8781ad9bf362818ed6
title: Tesla, Samsung Select Texas Town As New Hub For AI Chip Manufacturing
translatedTitle: ''
summary: Texas has seen significant growth in recent years, largely due to companies like Tesla and Samsung moving operations to the state. This comes as Tesla signed a $16.5 billion deal with Samsung to manufacture new AI6 chips in Taylor, Texas. The chips are considered the brains behind Tesla's next-generation autonomous vehicles. This investment in Texas is seen as a significant investment that will keep a significant amount of money and jobs in the state, particularly as AI continues to grow. The deal signals that Texas is now the leading for technology, outpacing Silicon Valley. This is also a sign that the state is becoming more relevant in the rapidly changing world of technological advancement.
translatedSummary: ''
labels: []
topics:
- name: AI
taxonomies:
- name: /News/Technology News
- name: /News/Business News/Company News
- name: /Autos & Vehicles/Motor Vehicles (By Brand)/Tesla Motors
categories:
- name: Tech
- name: Auto
entities:
- data: Tesla
type: ORG
mentions: 4
- data: Samsung
type: ORG
mentions: 2
- data: KTRH High Tech
type: ORG
mentions: 1
- data: Texas
type: GPE
mentions: 11
- data: the Lone Star State
type: GPE
mentions: 2
- data: Taylor
type: GPE
mentions: 1
- data: South Korea
type: GPE
mentions: 1
- data: Taiwan
type: GPE
mentions: 1
- data: AI6
type: PRODUCT
mentions: 1
- data: Texans
type: NORP
mentions: 1
- data: American
type: NORP
mentions: 1
- data: Michael Garfield
type: PERSON
mentions: 3
- data: Trump
type: PERSON
mentions: 1
- data: Silicon Valley
type: LOC
mentions: 1
companies:
- id: 16c0e6ea111945fb9c5af03fc7ce6d82
name: Samsung C&T Corporation
domains:
- samsungcnt.com
symbols:
- 028260.KS
- 02826K.KS
- id: 165c2312f79e4d3d982a75eec3054904
name: Samsung India Software Operations
domains:
- samsungindiasoft.com
symbols: []
- id: eeee660a046242b8bf99f45fdc95cc32
name: Tesla, Inc.
domains:
- tesla.com
symbols:
- TSLA
- TL0.DE
people: []
locations:
- country: us
state: TX
county: Williamson County
places: []
QuerySearchResult:
required:
- articles
- numResults
- status
type: object
properties:
status:
type: integer
format: int32
numResults:
type: integer
format: int64
articles:
type: array
items:
$ref: '#/components/schemas/Article'
example:
status: 200
numResults: 10000
articles:
- url: https://www.breitbart.com/news/south-koreas-lee-trump-to-hold-summit-at-white-house-on-aug-25/
authorsByline: UPI
articleId: 97dce2f1bdcd441c99360e58d38e811d
clusterId: 87f8c1cdc02f41e0b6fc818f86239c7f
source:
domain: breitbart.com
paywall: false
location: null
imageUrl: https://media.breitbart.com/media/2025/08/wi/upi/south-koreas-lee-trump-hold-summit-at-white-house-aug-25-south-korea-lee-trump-hold-summit-at-white.jpg
country: us
language: en
pubDate: '2025-08-12T02:40:08+00:00'
addDate: '2025-08-12T09:50:33.647613+00:00'
refreshDate: '2025-08-12T09:50:33.647614+00:00'
score: 1.0
title: South Korea's Lee, Trump to hold summit at White House on Aug. 25
description: SEOUL, Aug. 12 (UPI) -- South Korean President Lee Jae Myung will travel to Washington to hold a summit with U.S. President Donald Trump on Aug. 25, Lee's
content: 'SEOUL, Aug. 12 (UPI) — South Korean President Lee Jae Myung will travel to Washington to hold a summit with U.S. President Donald Trump on Aug. 25, Lee’s office said Tuesday, with trade and defense issues expected to be at the top of the agenda.
The three-day visit will be Lee’s first trip to the United States since taking office in June, presidential spokeswoman Kang Yu-jung said at a press briefing.
“The two leaders plan to discuss ways to develop the Korea-U.S. alliance into a future comprehensive strategic alliance in response to the changing international security and economic environment,” Kang said.
“They will also discuss ways to further strengthen the robust South Korea-U.S. combined defense posture and to cooperate to establish peace and achieve denuclearization on the Korean Peninsula,” she added.
The summit comes weeks after Seoul and Washington struck a trade deal that lowered Trump’s threatened 25% tariffs on South Korean goods to 15%. As part of the package, South Korea pledged to invest $350 billion in the United States and to purchase $100 billion in U.S. energy.
Based on the tariff deal, Trump and Lee will consult on economic cooperation in semiconductors, batteries and shipbuilding, as well as partnerships in advanced technologies and key minerals, Kang said.
The future of the decades-old South Korea-U.S. military alliance is also expected to be in the spotlight as the two countries prepare to kick off their annual Ulchi Freedom Shield joint exercise on Monday.
During his previous term in office, Trump called for massive increases in Seoul’s financial contribution for the 28,500 U.S. forces stationed in Korea.
Seoul signed a new five-year cost-sharing agreement with Washington in October, but Trump has suggested he would look to renegotiate the terms of the deal amid calls for allies to increase their defense spending.
“South Korea is making a lot of money, and they’re very good,” Trump told reporters at a Cabinet meeting in the White House last month. “They’re very good, but, you know, they should be paying for their own military.”
On Friday, Gen. Xavier Brunson, commander of U.S. Forces Korea, discussed the need to restructure the military alliance in response to an evolving regional security environment.
“Alliance modernization … reflects the recognition that the world’s changed around us,” Brunson told local reporters at a press briefing in Pyeongtaek. “We have a nuclear-armed adversary who’s north of the border. We have increasing involvement of Russia, along with the DPRK, and we also have the Chinese and the threat that they pose to a free and open Indo-Pacific.”
The Democratic People’s Republic of Korea is the official name of North Korea.
Brunson avoided the question of a potential of U.S. troop reduction on the peninsula, stressing military capabilities and strategic flexibility over numbers ahead of the Lee-Trump summit.
“We’re going to have two chief executives sitting down together to discuss not only the security situation in the region, but the security situation in the world,” he said. “For us, it’s about the capabilities. We want to have the right capabilities resident on the Peninsula.”
Lee will be in the United States from Aug. 24-26 for his summit with Trump. In response to local media reports that Lee may also stop in Japan around the time of his U.S. trip, presidential spokeswoman Kang said that nothing had been confirmed.'
medium: Article
links: []
labels: []
matchedAuthors: []
claim: ''
verdict: ''
keywords:
- name: U.S. Forces Korea
weight: 0.09803479
- name: U.S. President Donald Trump
weight: 0.09388354
- name: South Korea
weight: 0.08868486
- name: U.S.
weight: 0.077976175
- name: North Korea
weight: 0.077027455
- name: U.S. troop reduction
weight: 0.07701537
- name: Korea
weight: 0.076576516
- name: U.S. energy
weight: 0.0765642
- name: Donald Trump
weight: 0.07466888
- name: Trump
weight: 0.07382798
topics: []
categories:
- name: Politics
taxonomies:
- name: /News/Politics/Other
score: 0.98291015625
- name: /Law & Government/Government/Executive Branch
score: 0.96337890625
- name: /People & Society/Social Sciences/Political Science
score: 0.8974609375
entities:
- data: South Korea's
type: GPE
mentions: 7
- data: SEOUL
type: GPE
mentions: 1
- data: Washington
type: GPE
mentions: 3
- data: U.S.
type: GPE
mentions: 7
- data: the United States
type: GPE
mentions: 3
- data: Seoul
type: GPE
mentions: 3
- data: Pyeongtaek
type: GPE
mentions: 1
- data: Russia
type: GPE
mentions: 1
- data: DPRK
type: GPE
mentions: 1
- data: The Democratic People’s Republic of Korea
type: GPE
mentions: 2
- data: Japan
type: GPE
mentions: 1
- data: Lee
type: PERSON
mentions: 8
- data: Trump
type: PERSON
mentions: 8
- data: Kang Yu-jung
type: PERSON
mentions: 4
- data: Xavier Brunson
type: PERSON
mentions: 3
- data: White House
type: ORG
mentions: 1
- data: Cabinet
type: ORG
mentions: 1
- data: U.S. Forces Korea
type: ORG
mentions: 1
- data: South Korean
type: NORP
mentions: 2
- data: Chinese
type: NORP
mentions: 1
- data: the Korean Peninsula
type: LOC
mentions: 2
- data: Indo
type: LOC
mentions: 1
- data: '-'
type: LOC
mentions: 1
- data: Pacific
type: LOC
mentions: 1
- data: Ulchi Freedom Shield
type: PRODUCT
mentions: 1
- data: the White House
type: FAC
mentions: 1
companies: []
sentiment:
positive: 0.655995
negative: 0.103086375
neutral: 0.24091867
summary: South Korean President Lee Jae Myung is set to meet with U.S. President Donald Trump on Aug. 25, this will be his first trip to the United States since taking office in June. The summit will focus on trade and defense issues, with the two leaders expected to discuss ways to develop the Korea-U.S.-Korea alliance into a future comprehensive strategic alliance. They will also discuss strengthening the robust South Korea-US combined defense posture and cooperating to establish peace and achieve denuclearization on the Korean Peninsula. The future of the decades-old military alliance is also expected to be in the spotlight as the two countries prepare to participate in their annual Ulchi Freedom Shield joint exercise.
shortSummary: South Korean President Lee Jae Myung will hold a summit with U.S. President Donald Trump in Washington, focusing on strengthening the South Korea-U.S alliance and establishing peace and denuclearization.
translation: ''
translatedTitle: ''
translatedDescription: ''
translatedSummary: ''
locations:
- country: kr
- country: kr
state: '11'
city: Seoul
reprint: true
reprintGroupId: 4e4bf19e89984af1baee7d04776bb9cd
places: []
people:
- wikidataId: Q22686
name: Donald Trump
- wikidataId: Q12612463
name: Lee Jae Myung
ArticleRefreshJobResponse:
type: object
properties:
jobId:
type:
- string
- 'null'
format: uuid
status:
type:
- string
- 'null'
enum:
- PENDING
- PROCESSING
- COMPLETED
results:
type:
- array
- 'null'
items:
$ref: '#/components/schemas/ArticleRefreshJobArticleResult'
Coordinate:
type: object
properties:
lat:
type:
- number
- 'null'
description: Latitude in decimal degrees.
format: double
lon:
type:
- number
- 'null'
description: Longitude in decimal degrees.
format: double
description: Geographic coordinates of the place.
Place:
type: object
properties:
osmId:
type:
- string
- 'null'
description: OpenStreetMap identifier for the place.
road:
type:
- string
- 'null'
description: Road associated with the place.
quarter:
type:
- string
- 'null'
description: Quarter associated with the place.
suburb:
type:
- string
- 'null'
description: Suburb associated with the place.
city:
type:
- string
- 'null'
description: City associated with the place.
town:
type:
- string
- 'null'
description: Town associated with the place.
county:
type:
- string
- 'null'
description: County associated with the place.
stateDistrict:
type:
- string
- 'null'
description: State district associated with the place.
state:
type:
- string
- 'null'
description: State or region associated with the place.
postcode:
type:
- string
- 'null'
description: Postal code associated with the place.
country:
type:
- string
- 'null'
description: Country associated with the place.
countryCode:
type:
- string
- 'null'
description: Two-character country code for the place.
amenity:
type:
- string
- 'null'
description: Named amenity associated with the place.
neighbourhood:
type:
- string
- 'null'
description: Neighborhood associated with the place.
coordinates:
allOf:
- $ref: '#/components/schemas/Coordinate'
description: Structured geographic places extracted from the article.
Article:
type: object
properties:
url:
type:
- string
- 'null'
description: Canonical URL of the article.
authorsByline:
type:
- string
- 'null'
description: Author byline as published by the source.
articleId:
type:
- string
- 'null'
description: Unique Perigon identifier for the article.
clusterId:
type:
- string
- 'null'
description: Identifier of the story cluster containing the article, when assigned.
source:
allOf:
- $ref: '#/components/schemas/SourceHolder'
imageUrl:
type:
- string
- 'null'
description: Primary image URL associated with the article.
country:
type:
- string
- 'null'
description: Two-character country code associated with the article.
language:
type:
- string
- 'null'
description: ISO 639 two-letter language code for the article.
pubDate:
type:
- string
- 'null'
description: Date and time the article was published, in ISO 8601 format.
addDate:
type:
- string
- 'null'
description: Date and time the article was added to Perigon, in ISO 8601 format.
refreshDate:
type:
- string
- 'null'
description: Date and time the article was last refreshed by Perigon, in ISO 8601 format.
score:
type:
- number
- 'null'
description: Search relevance score for the article, when applicable.
format: float
title:
type:
- string
- 'null'
description: Article headline.
description:
type:
- string
- 'null'
description: Article description or publisher-provided excerpt.
content:
type:
- string
- 'null'
description: Full article body available to Perigon.
enContentWordCount:
type:
- integer
- 'null'
description: Word count of the English article content, when available.
format: int32
medium:
type:
- string
- 'null'
description: Primary medium type, such as Article or Video.
links:
type:
- array
- 'null'
description: URLs linked from the article content.
items:
type: string
description: URLs linked from the article content.
labels:
type:
- array
- 'null'
description: Editorial labels assigned to the article.
items:
$ref: '#/components/schemas/LabelHolder'
eventTypes:
type:
- array
- 'null'
description: Event types detected in the article.
items:
$ref: '#/components/schemas/EventTypeHolder'
matchedAuthors:
type:
- array
- 'null'
description: Known journalist records matched to the article byline.
items:
$ref: '#/components/schemas/IdNameHolder'
claim:
type:
- string
- 'null'
description: Claim identified in fact-check content, when applicable.
verdict:
type:
- string
- 'null'
description: Verdict identified in fact-check content, when applicable.
keywords:
type:
- array
- 'null'
description: Keywords extracted from the article with their relevance weights.
items:
$ref: '#/components/schemas/KeywordHolder'
topics:
type:
- array
- 'null'
description: Topics assigned to the article.
items:
$ref: '#/components/schemas/TopicHolder'
categories:
type:
- array
- 'null'
description: Broad content categories assigned to the article.
items:
$ref: '#/components/schemas/CategoryHolder'
taxonomies:
type:
- array
- 'null'
description: Google Content Categories assigned to the article with confidence scores.
items:
$ref: '#/components/schemas/CategoryWithScoreHolder'
entities:
type:
- array
- 'null'
description: Named entities extracted from the article.
items:
$ref: '#/components/schemas/EntityHolder'
companies:
type:
- array
- 'null'
description: Companies identified in the article.
items:
$ref: '#/components/schemas/CompanyHolder'
sentiment:
allOf:
- $ref: '#/components/schemas/SentimentHolder'
summary:
type:
- string
- 'null'
description: Generated summary of the article, when available.
shortSummary:
type:
- string
- 'null'
description: Short generated summary of the article, when available.
translation:
type:
- string
- 'null'
description: Translated article content, when available.
translatedTitle:
type:
- string
- 'null'
description: English translation of the article title, when available.
translatedDescription:
type:
- string
- 'null'
description: English translation of the article description, when available.
translatedSummary:
type:
- string
- 'null'
description: English translation of the article summary, when available.
locations:
type:
- array
- 'null'
description: Locations identified as central to the article.
items:
$ref: '#/components/schemas/LocationHolder'
reprint:
type:
- boolean
- 'null'
description: Whether the article is a reprint of previously published content.
reprintGroupId:
type:
- string
- 'null'
description: Identifier grouping the original article with its known reprints.
places:
type:
- array
- 'null'
description: Structured geographic places extracted from the article.
items:
$ref: '#/components/schemas/Place'
people:
type:
- array
- 'null'
description: Known people identified in the article.
items:
$ref: '#/components/schemas/PersonHolder'
cluster:
allOf:
- $ref: '#/components/schemas/NewsCluster'
journalists:
type:
- array
- 'null'
description: Expanded journalist details, when requested and available.
items:
$ref: '#/components/schemas/Journalist'
highlights:
type:
- object
- 'null'
additionalProperties:
type: array
description: Matched text fragments grouped by article field.
items:
type: string
description: Matched text fragments grouped by article field.
description: Matched text fragments grouped by article field.
vectors:
type:
- array
- 'null'
description: Vector embeddings associated with the article, when requested.
items:
$ref: '#/components/schemas/VectorData'
StorySearchResult:
required:
- numResults
- results
- status
type: object
properties:
status:
type: integer
format: int32
numResults:
type: integer
format: int64
results:
type: array
items:
$ref: '#/components/schemas/NewsCluster'
description: Story search result
example:
status: 200
numResults: 10000
results:
- createdAt: '2025-08-12T09:26:15.861525+00:00'
updatedAt: '2025-08-12T09:47:42.780519+00:00'
initializedAt: '2025-08-12T09:43:09.364043+00:00'
id: c9b6bebef14943edb6269c80b1cb51c5
name: Red Bull Completes Newcastle Rugby Takeover, Rebrands Club
summary: Red Bull has completed a takeover of the Premiership Rugby club Newcastle Falcons, rebranding the team as Newcastle Red Bulls while keeping them at Kingston Park. The acquisition marks Red Bull's first significant involvement in rugby union and brings fresh investment aimed at elevating the club's competitive potential domestically and in Europe. Steve Diamond will remain as director of rugby, ensuring continuity as the club seeks to compete for trophies in the coming years. Red Bull plans to develop local rugby talent through an enhanced academy program and enhance the fan experience by applying their innovative approach from global sports initiatives. Premiership Rugby CEO Simon Massie-Taylor hailed the takeover as a landmark moment that will add value to both Newcastle and the league, emphasizing Red Bull's expertise in high-performance sports and marketing. The club, established in 1877 and historically known as Newcastle Falcons, aims to leverage Red Bull's global sports portfolio, which includes Formula 1 and various football clubs, to grow its fanbase and player pathway in the North East.
shortSummary: Energy drink giant Red Bull has completed a takeover of Newcastle Falcons rugby club, rebranding it as Newcastle Red Bulls and keeping it at Kingston Park with Steve Diamond remaining as director of rugby. Red Bull aims to elevate the club's competitive potential, develop local talent through an enhanced academy, and leverage their global sports expertise to boost both the club and the Gallagher Premiership.
summaryReferences:
- 66c3a007e2374ffdbbaa70ee5e251693
- e32349ed5e084f71be1e28733755ed7e
- 558dc91a9ab04630908404ca4221d2fb
- f73d2117e50d4cfb8740ed3384b2b330
- c1c65a3e5bc34ab1ab9f049986a53cc1
keyPoints:
- point: The previous owner Semore Kurdi had put the club up for sale at a nominal price of £1 due to financial struggles, signaling the club was on the brink of a financial crisis before Red Bull's takeover.
references: []
- point: Newcastle Rugby Ltd highlighted the club’s long history, originally established in 1877 as Gosforth Football Club and undergoing several name changes before becoming Newcastle Falcons in 1996, and now Newcastle Red Bulls in 2025.
references: []
- point: Newcastle Falcons have a decorated history, having won five major titles including the Premiership in 1998 and four domestic cups in 1976, 1977, 2001, and 2004.
references: []
- point: Red Bull's global sports portfolio includes ownership stakes in multiple football clubs such as RB Leipzig, New York Red Bulls, Red Bull Salzburg, Red Bull Bragantino, and minority stakes in Paris FC and Leeds United, illustrating their extensive experience in sports ownership and management.
references: []
- point: Red Bull has a history of working with prominent rugby players such as Springboks captain Siya Kolisi and former England international Jack Nowell, indicating their prior engagement with rugby despite this being their first significant club ownership in rugby union.
references: []
sentiment:
positive: 0.6500967
negative: 0.112720154
neutral: 0.23718315
uniqueCount: 6
reprintCount: 3
totalCount: 9
countries:
- name: gb
count: 5
- name: ca
count: 3
- name: za
count: 1
topCountries:
- gb
topics:
- name: Rugby
count: 2
topTopics:
- name: Rugby
categories:
- name: Sports
count: 5
topCategories:
- name: Sports
taxonomies:
- name: /News/Sports News
count: 8
- name: /Sports/Team Sports/Rugby
count: 8
topTaxonomies:
- name: /News/Sports News
- name: /Sports/Team Sports/Rugby
people:
- wikidataId: Q15837487
name: Oliver Mintzlaff
count: 8
- wikidataId: Q7612382
name: Steve Diamond
count: 5
- wikidataId: Q7533339
name: Siya Kolisi
count: 2
- wikidataId: Q15731077
name: Jack Nowell
count: 2
- wikidataId: Q7612383
name: Steve Diamond
count: 3
- wikidataId: Q5229992
name: Dave Thompson
count: 1
- wikidataId: Q104535295
name: Jamie Blamire
count: 2
- wikidataId: Q50124849
name: Callum Chick
count: 2
- wikidataId: Q74698940
name: Tom Christie
count: 2
- wikidataId: Q19519831
name: Max Clark
count: 1
topPeople:
- wikidataId: Q15837487
name: Oliver Mintzlaff
- wikidataId: Q7612382
name: Steve Diamond
companies:
- id: d19eef21be0343e4b96c73b85f5afed9
name: Premiership Rugby
domains:
- premiershiprugby.com
symbols: []
count: 7
- id: c28c867e3ec84f569eb0c2c202ffec20
name: Red Bull GmbH
domains:
- redbull.com
symbols: []
count: 7
- id: 1986c4e2c8b54e81af4fbae3e8fbb870
name: The Raine Group
domains:
- raine.com
symbols: []
count: 2
- id: d79a8b400c5c4f12bbbda5b4ac95d882
name: TNT Sports
domains:
- wbd.com
- discoverysports.com
symbols: []
count: 4
- id: 932cd2db2347407fbda9386cb18307dc
name: Deloitte
domains:
- deloitte.com
symbols: []
count: 2
- id: b40dc389506141a4bcd5ba94f64592f6
name: Red Bull
domains:
- redbullracing.com
symbols: []
count: 6
- id: f1e3e2243cd142408136bd8f43282c4a
name: City A.M.
domains:
- cityam.com
symbols: []
count: 1
- id: c4800bcde1c940d6b13e2022836c10cd
name: Getty Images Holdings, Inc.
domains:
- gettyimages.com
symbols:
- GETY
count: 2
- id: 1bc09603d6cd4aeba01c8c7762d8cda6
name: Reuters
domains:
- reuters.com
symbols: []
count: 1
- id: fb9806c8e362406ea89d48d31dcf50a7
name: Formula One Group
domains:
- libertymedia.com
symbols:
- 0JUJ.L
- FWONA
- FWONB
- FWONK
count: 1
- id: 01a4555587844344a5b0eef0854ee0ad
name: Guardian Media Group
domains:
- theguardian.com
symbols: []
count: 1
topCompanies:
- id: d19eef21be0343e4b96c73b85f5afed9
name: Premiership Rugby
domains:
- premiershiprugby.com
symbols: []
- id: c28c867e3ec84f569eb0c2c202ffec20
name: Red Bull GmbH
domains:
- redbull.com
symbols: []
- id: b40dc389506141a4bcd5ba94f64592f6
name: Red Bull
domains:
- redbullracing.com
symbols: []
locations:
- state: ENG
city: Newcastle upon Tyne
count: 2
topLocations:
- state: ENG
city: Newcastle upon Tyne
CategoryWithScoreHolder:
type: object
properties:
name:
type:
- string
- 'null'
description: Full taxonomy category path.
score:
type:
- number
- 'null'
description: Confidence score for the category assignment.
format: double
description: Google Content Categories assigned to the article with confidence scores.
EntityHolder:
type: object
properties:
data:
type:
- string
- 'null'
description: Text value of the extracted entity.
type:
type:
- string
- 'null'
description: Entity type, such as PERSON, ORGANIZATION, or LOCATION.
mentions:
type:
- integer
- 'null'
description: Number of times the entity appears in the article.
format: int32
description: Named entities extracted from the article.
EventTypeHolder:
type: object
properties:
name:
type:
- string
- 'null'
description: Detected event name.
type:
type:
- string
- 'null'
description: Detected event classification.
description: Event types detected in the article.
KeyPoint:
type: object
properties:
point:
type:
- string
- 'null'
description: A key fact or development identified in the content.
references:
type:
- array
- 'null'
description: Article IDs supporting the key point.
items:
type: string
description: Article IDs supporting the key point.
description: Key facts and developments identified in the story.
securitySchemes:
apiKeyAuth:
type: http
scheme: bearer