Обогащённый - Подписка на статьи
WebSocket API finlight.me позволяет подписываться на обновления статей в реальном времени. После подключения и подписки вы сразу получаете самую свежую статью, соответствующую вашему запросу, а затем — любые вновь опубликованные статьи, отвечающие вашим критериям, по мере их появления.
Модель статьи
Модель статьи в ответе содержит всю информацию о статье: ссылку, заголовок, дату публикации и источник. Также она содержит тональность и достоверность по ней.
- Name
link- Type
- string
- Description
URL полной статьи.
- Name
source- Type
- string
- Description
Сайт-источник. Напр.
www.reuters.com
- Name
title- Type
- string
- Description
Заголовок статьи.
- Name
summary- Type
- string
- Description
Краткое содержание статьи, если есть. Может быть null.
- Name
publishDate- Type
- Date
- Description
Дата публикации в виде даты ISO.
- Name
createdAt- Type
- Date
- Description
Внутренняя дата создания статьи в системе finlight в виде даты ISO.
- Name
revisedDate- Type
- Date | null
- Description
Дата последней правки статьи после первоначальной публикации.
null, если статья никогда не правилась. Присутствует, когда включёнincludeUpdatesи статья была отредактирована.
- Name
isUpdate- Type
- boolean
- Description
true, когда эта доставка вызвана обновлением статьи после публикации. Присутствует только при включённомincludeUpdates.
- Name
language- Type
- string
- Description
Код языка в формате ISO 639-1. Напр.
en|de|fr
- Name
sentiment- Type
- string
- Description
Результат анализа тональности. Значения:
positive|neutral|negative
- Name
confidence- Type
- number
- Description
Уровень достоверности анализа тональности, от 0 до 1.
- Name
images- Type
- string[]
- Description
Массив URL изображений из статьи.
- Name
countries- Type
- string[]
- Description
Массив кодов стран в формате ISO 3166-1 alpha-2, представляющих страны, связанные со статьёй. Напр.
["US", "GB", "DE"]. Может быть пустым.
- Name
categories- Type
- string[]
- Description
Массив категорий статьи. Возможные значения:
markets|economy|business|politics|geopolitics|regulation|technology|energy|commodities|crypto|health|climate|security. Может быть пустым.
- Name
companies- Type
- Company[]
- Description
Массив компаний, упомянутых в статье. Отображается/доступен только на определённом уровне подписки. Может быть null.
Модель компании
Модель компании в ответе содержит информацию о компании, упомянутой в статье. Она включает такие сведения, как название компании, тикер, отрасль и другое.
- Name
companyId- Type
- number
- Description
Уникальный идентификатор компании.
- Name
confidence- Type
- number
- Description
Уровень достоверности идентификации компании, от 0 до 1.
- Name
country- Type
- string
- Description
Страна, где базируется компания, в формате ISO 3166-1 alpha-2. Напр.
US|DE|GB
- Name
exchange- Type
- string
- Description
Фондовая биржа, на которой котируется компания.
- Name
industry- Type
- string
- Description
Отраслевой сектор компании. Напр.
Biotechnology, Technology
- Name
name- Type
- string
- Description
Полное название компании. Напр.
Apple Inc.
- Name
sector- Type
- string
- Description
Сектор компании. Напр.
Technology|Health Care
- Name
ticker- Type
- string
- Description
Биржевой тикер компании. Напр.
AAPL|GOOGL
- Name
isin- Type
- string
- Description
Международный идентификационный номер ценных бумаг (ISIN) компании. Напр.
US0378331005
- Name
openfigi- Type
- string
- Description
Идентификатор OpenFIGI компании. Напр.
BBG000B9XRY4
- Name
primaryListing- Type
- object
- Description
Информация об основном биржевом листинге компании.
- Name
primaryListing.ticker- Type
- string
- Description
Основной тикер на главной бирже.
- Name
primaryListing.exchangeCode- Type
- string
- Description
Код основной биржи, на которой котируется акция.
- Name
primaryListing.exchangeCountry- Type
- string
- Description
Страна основной биржи, на которой котируется акция.
- Name
isins- Type
- string[]
- Description
Массив международных идентификационных номеров ценных бумаг (ISIN) компании.
- Name
otherListings- Type
- object[]
- Description
Массив других биржевых листингов компании.
- Name
otherListings[].ticker- Type
- string
- Description
Тикер на альтернативной бирже.
- Name
otherListings[].exchangeCode- Type
- string
- Description
Код альтернативной биржи, на которой котируется акция.
- Name
otherListings[].exchangeCountry- Type
- string
- Description
Страна альтернативной биржи, на которой котируется акция.
Получение статей
При подписке вы сначала получите самую свежую статью, соответствующую вашему запросу, а затем — новые статьи по мере их публикации.
При подписке вы можете указать различные параметры для фильтрации получаемых статей:
- Name
query- Type
- string
- Description
Поисковый запрос для поиска релевантных статей. Расширенные запросы
- Name
sources- Type
- string[]
- Description
Фильтрация по одному или нескольким источникам статей. Напр. ["www.reuters.com", "www.cnbc.com"]. Допустимые значения см. в эндпоинте источников. Поддерживает подстановочный знак
"*"для включения всех источников.
- Name
optInSources- Type
- string[]
- Description
Дополнительные источники для включения помимо вашего набора источников по умолчанию. Допустимые значения см. в эндпоинте источников.
- Name
excludeSources- Type
- string[]
- Description
Исключает один или несколько источников. Напр. ["www.reuters.com", "www.cnbc.com"]. Допустимые значения см. в эндпоинте источников.
- Name
tickers- Type
- string[]
- Description
Фильтрация по биржевым тикерам (массив строк). Возвращает статьи, упоминающие эти тикеры. Поддерживает подстановочный знак
"*"для включения всех тикеров.
- Name
countries- Type
- string[]
- Description
Фильтрация по странам, о которых идёт речь в статье, с использованием кодов стран ISO 3166-1 alpha-2 (массив строк). Напр.
["US", "GB", "DE"]. Соответствует полюcountriesстатьи, а не стране издателя, юрисдикции компании или бирже листинга.
- Name
categories- Type
- string[]
- Description
Фильтрация по категории статьи (массив строк). Возможные значения:
markets,economy,business,politics,geopolitics,regulation,technology,energy,commodities,crypto,health,climate,security.
- Name
includeEntities- Type
- boolean
- Description
Включает компании, упомянутые в статье. Требует определённого уровня подписки.
- Name
language- Type
- string
- Description
Фильтрация по языку (ISO 639-1). По умолчанию
en— возвращает только английский и исключает другие языки — см. Язык и охват.
- Name
includeUpdates- Type
- boolean
- Description
Когда включено, обновлённые статьи повторно доставляются с
isUpdate=trueи меткой времениrevisedDate. Полезно для отслеживания исправлений статей или добавления контента после первоначальной публикации.
- Name
extended- Type
- boolean
- Description
(Устарело) Устаревший флаг — принимается для обратной совместимости, но игнорируется сервером. Он не влияет на получаемые вами статьи.
Request
import { FinlightApi } from 'finlight-client'
const client = new FinlightApi({
apiKey: 'YOUR_API_KEY', // Replace with your API key
})
client.websocket.connect(
{
query: 'Nvidia',
language: 'en',
extended: true,
countries: ['US', 'GB'],
},
(article) => {
console.log('New article received:', article)
},
)
Управление лимитами подключений: Если ваш уровень подписки ограничивает число параллельных WebSocket-подключений, вы можете использовать опцию takeover, чтобы автоматически закрывать самое старое подключение при попытке открыть новое сверх лимита. Это предотвращает ошибки подключения во время разработки или перезапусков приложения.
По умолчанию takeover имеет значение false, что означает, что новые подключения будут отклонены, если вы достигли лимита. Включайте его во время разработки для удобства, но в продакшене лучше оставить отключённым для явного управления подключениями.
В TypeScript, Python, Java и Ruby эта опция задаётся на уже имеющемся у вас клиенте. В Go, C# и Rust клиент верхнего уровня всегда использует стандартные опции потока, поэтому takeover настраивается на напрямую созданном потоковом клиенте. Полный работающий пример на каждом языке см. в разделе Быстрый старт WebSocket.
Takeover
const client = new FinlightApi(
{
apiKey: 'YOUR_API_KEY',
},
{
takeover: true, // Automatically close oldest connection when limit is reached
},
)
Response
{
"link": "https://www.example.com/article1",
"source": "www.example.com",
"title": "Stock Market Hits New Highs",
"summary": "A brief summary of the article...",
"publishDate": "2023-10-01T12:34:56Z",
"createdAt": "2023-10-01T12:35:10Z",
"language": "en",
"sentiment": "positive",
"confidence": 0.95,
"images": [
"https://www.example.com/image1.jpg",
"https://www.example.com/image2.jpg"
],
"countries": ["US"],
"categories": ["markets", "technology"],
"companies": [
{
"companyId": 41494,
"confidence": 0.9335401058197021,
"country": "US",
"exchange": "XNAS",
"industry": "Biotechnology: Pharmaceutical Preparations",
"name": "Summit Therapeutics Inc. Common Stock",
"sector": "Health Care",
"ticker": "SMMT",
"isin": "US86627T1088",
"openfigi": "BBG01PH11VP5",
"primaryListing": {
"ticker": "SMMT",
"exchangeCode": "XNAS",
"exchangeCountry": "US"
},
"isins": ["US86627T1088", "US86627T2088"],
"otherListings": [
{
"ticker": "SMMT.L",
"exchangeCode": "XLON",
"exchangeCountry": "GB"
}
]
}
]
}
Response (includeUpdates: true)
{
"link": "https://www.example.com/article1",
"source": "www.example.com",
"title": "Stock Market Hits New Highs — Updated",
"summary": "An updated summary of the article...",
"publishDate": "2023-10-01T12:34:56Z",
"createdAt": "2023-10-01T12:35:10Z",
"revisedDate": "2023-10-02T08:00:00Z",
"isUpdate": true,
"language": "en",
"sentiment": "positive",
"confidence": 0.95,
"images": [
"https://www.example.com/image1.jpg"
],
"countries": ["US"],
"categories": ["markets"],
"companies": []
}
Вы можете держать подключение открытым и получать статьи в реальном времени без дополнительных запросов. По мере появления новых статей они отправляются напрямую в вашу функцию обратного вызова.