openapi: 3.0.0
info:
version: 3.0.0
title: Factset Time Series API For Digital Portals
description: >
Time series data, end-of-day or intraday, tick-by-tick or subsampled.
Additional vendor-specific endpoints provide a modified interface
for seamless integration with the ChartIQ chart library.
This API is focused on high-performance applications that are
* serving millions of end-users,
* accessible by client browsers via the internet,
* integrated into complex infrastructures such as existing frontend
frameworks or authentication services.
This API has been designed for direct use by client web applications and
feature extreme low latency:
The average response time across all endpoints is 30 ms whereas 99% of all
requests are answered in close to under 300ms.
See the [Real-Time Quotes API for Digital
Portals](https://developer.factset.com/api-catalog/real-time-quotes-api) for
access to detailed
price information.
contact:
name: FactSet Research Systems
url: https://developer.factset.com/contact
email: [email protected]
license:
name: Apache License, Version 2.0
url: https://www.apache.org/licenses/LICENSE-2.0
servers:
- url: https://api.factset.com/wealth/v3
paths:
/vendor/chartIQ/timeSeries/eod/list:
post:
tags:
- Vendor
operationId: post/vendor/chartIQ/timeSeries/eod/list
x-supportsOffsetBasedPaging: false
x-supportsOffsetBasedPagingWithoutTotal: false
x-supportsCursorBasedPaging: false
x-supportsCursorBasedPagingWithoutTotal: true
x-supportsPush: false
x-requiresUser: false
x-requiresInternalClient: false
x-disallowUser: false
x-no-merge: false
x-maxSortParameterCount: 10
x-supportsPermissionDeniedResponse: false
summary: Factset End-of-day time series data for a notation.
description: >-
End-of-day time series data for a notation. The resulting time series is
always adjusted for currency changes.<br><br>Pagination to a previous
page is not supported and `pagination.previous` is always `null`.
requestBody:
description: Request Body
content:
application/json:
schema:
$ref: '#/components/schemas/PostVendorChartIQTimeSeriesEodListRequest'
required: true
responses:
'200':
$ref: '#/components/responses/PostVendorChartIQTimeSeriesEodList200Response'
parameters: []
/vendor/chartIQ/timeSeries/eod/subsample/get:
post:
tags:
- Vendor
operationId: post/vendor/chartIQ/timeSeries/eod/subsample/get
x-supportsOffsetBasedPaging: false
x-supportsOffsetBasedPagingWithoutTotal: false
x-supportsCursorBasedPaging: false
x-supportsCursorBasedPagingWithoutTotal: false
x-supportsPush: false
x-requiresUser: false
x-requiresInternalClient: false
x-disallowUser: false
x-no-merge: false
x-maxSortParameterCount: 10
x-supportsPermissionDeniedResponse: false
summary: Factset Single subsample end-of-day data for a notation.
description: >-
Single subsample end-of-day data for a notation. The sample is always
adjusted for currency changes. The subsample may exceed the entitled
date range, but will be based only on days that are in the entitled
range.
requestBody:
description: Request Body
content:
application/json:
schema:
$ref: >-
#/components/schemas/PostVendorChartIQTimeSeriesEodSubsampleGetRequest
required: true
responses:
'200':
$ref: >-
#/components/responses/PostVendorChartIQTimeSeriesEodSubsampleGet200Response
parameters: []
/vendor/chartIQ/timeSeries/eod/subsample/list:
post:
tags:
- Vendor
operationId: post/vendor/chartIQ/timeSeries/eod/subsample/list
x-supportsOffsetBasedPaging: false
x-supportsOffsetBasedPagingWithoutTotal: false
x-supportsCursorBasedPaging: false
x-supportsCursorBasedPagingWithoutTotal: true
x-supportsPush: false
x-requiresUser: false
x-requiresInternalClient: false
x-disallowUser: false
x-no-merge: false
x-maxSortParameterCount: 10
x-supportsPermissionDeniedResponse: false
summary: Factset Subsampled end-of-day time series data for a notation.
description: >-
Subsampled end-of-day time series data for a notation. The resulting
time series is always adjusted for currency changes. If a subsample's
date range is not entirely within the maximally entitled date range, the
subsample is excluded from the response.<br><br>Pagination to a previous
page is not supported and `pagination.previous` is always `null`.
requestBody:
description: Request Body
content:
application/json:
schema:
$ref: >-
#/components/schemas/PostVendorChartIQTimeSeriesEodSubsampleListRequest
required: true
responses:
'200':
$ref: >-
#/components/responses/PostVendorChartIQTimeSeriesEodSubsampleList200Response
parameters: []
/vendor/chartIQ/timeSeries/intraday/subsample/get:
post:
tags:
- Vendor
operationId: post/vendor/chartIQ/timeSeries/intraday/subsample/get
x-supportsOffsetBasedPaging: false
x-supportsOffsetBasedPagingWithoutTotal: false
x-supportsCursorBasedPaging: false
x-supportsCursorBasedPagingWithoutTotal: false
x-supportsPush: false
x-requiresUser: false
x-requiresInternalClient: false
x-disallowUser: false
x-no-merge: false
x-maxSortParameterCount: 10
x-supportsPermissionDeniedResponse: false
summary: Factset Single subsample intraday data for a notation.
description: >-
Single subsample intraday data for a notation. The subsample may exceed
the entitled time range, but will be based only on ticks that are in the
entitled range.
requestBody:
description: Request Body
content:
application/json:
schema:
$ref: >-
#/components/schemas/PostVendorChartIQTimeSeriesIntradaySubsampleGetRequest
required: true
responses:
'200':
$ref: >-
#/components/responses/PostVendorChartIQTimeSeriesIntradaySubsampleGet200Response
parameters: []
/vendor/chartIQ/timeSeries/intraday/subsample/list:
post:
tags:
- Vendor
operationId: post/vendor/chartIQ/timeSeries/intraday/subsample/list
x-supportsOffsetBasedPaging: false
x-supportsOffsetBasedPagingWithoutTotal: false
x-supportsCursorBasedPaging: false
x-supportsCursorBasedPagingWithoutTotal: true
x-supportsPush: false
x-requiresUser: false
x-requiresInternalClient: false
x-disallowUser: false
x-no-merge: false
x-maxSortParameterCount: 10
x-supportsPermissionDeniedResponse: false
summary: Factset Subsampled intraday time series data for a notation.
description: >-
Subsampled intraday time series data for a notation. If a subsample's
time range is not entirely within the maximally entitled time range, the
subsample is excluded from the response.<br><br>Pagination to a previous
page is not supported and `pagination.previous` is always `null`.
requestBody:
description: Request Body
content:
application/json:
schema:
$ref: >-
#/components/schemas/PostVendorChartIQTimeSeriesIntradaySubsampleListRequest
required: true
responses:
'200':
$ref: >-
#/components/responses/PostVendorChartIQTimeSeriesIntradaySubsampleList200Response
parameters: []
/prices/timeSeries/eod/list:
post:
tags:
- Prices
operationId: post/prices/timeSeries/eod/list
x-supportsOffsetBasedPaging: false
x-supportsOffsetBasedPagingWithoutTotal: false
x-supportsCursorBasedPaging: false
x-supportsCursorBasedPagingWithoutTotal: true
x-supportsPush: false
x-requiresUser: false
x-requiresInternalClient: false
x-disallowUser: false
x-no-merge: false
x-maxSortParameterCount: 10
x-supportsPermissionDeniedResponse: false
summary: Factset End-of-day time series data for a notation.
description: >-
End-of-day time series data for a notation. The resulting time series is
always adjusted for currency changes.<br><br>Pagination to a previous
page is not supported and `pagination.previous` is always `null`.
requestBody:
description: Request Body
content:
application/json:
schema:
$ref: '#/components/schemas/PostPricesTimeSeriesEodListRequest'
required: true
responses:
'200':
$ref: '#/components/responses/PostPricesTimeSeriesEodList200Response'
parameters: []
/prices/timeSeries/eod/subsample/get:
post:
tags:
- Prices
operationId: post/prices/timeSeries/eod/subsample/get
x-supportsOffsetBasedPaging: false
x-supportsOffsetBasedPagingWithoutTotal: false
x-supportsCursorBasedPaging: false
x-supportsCursorBasedPagingWithoutTotal: false
x-supportsPush: false
x-requiresUser: false
x-requiresInternalClient: false
x-disallowUser: false
x-no-merge: false
x-maxSortParameterCount: 10
x-supportsPermissionDeniedResponse: false
summary: Factset Single subsample end-of-day data for a notation.
description: >-
Single subsample end-of-day data for a notation. The sample is always
adjusted for currency changes. The subsample may exceed the entitled
date range, but will be based only on days that are in the entitled
range.
requestBody:
description: Request Body
content:
application/json:
schema:
$ref: '#/components/schemas/PostPricesTimeSeriesEodSubsampleGetRequest'
required: true
responses:
'200':
$ref: >-
#/components/responses/PostPricesTimeSeriesEodSubsampleGet200Response
parameters: []
/prices/timeSeries/eod/subsample/list:
post:
tags:
- Prices
operationId: post/prices/timeSeries/eod/subsample/list
x-supportsOffsetBasedPaging: false
x-supportsOffsetBasedPagingWithoutTotal: false
x-supportsCursorBasedPaging: false
x-supportsCursorBasedPagingWithoutTotal: true
x-supportsPush: false
x-requiresUser: false
x-requiresInternalClient: false
x-disallowUser: false
x-no-merge: false
x-maxSortParameterCount: 10
x-supportsPermissionDeniedResponse: false
summary: Factset Subsampled end-of-day time series data for a notation.
description: >-
Subsampled end-of-day time series data for a notation. The resulting
time series is always adjusted for currency changes. If a subsample's
date range is not entirely within the maximally entitled date range, the
subsample is excluded from the response.<br><br>Pagination to a previous
page is not supported and `pagination.previous` is always `null`.
requestBody:
description: Request Body
content:
application/json:
schema:
$ref: '#/components/schemas/PostPricesTimeSeriesEodSubsampleListRequest'
required: true
responses:
'200':
$ref: >-
#/components/responses/PostPricesTimeSeriesEodSubsampleList200Response
parameters: []
/prices/timeSeries/intraday/list:
post:
tags:
- Prices
operationId: post/prices/timeSeries/intraday/list
x-supportsOffsetBasedPaging: false
x-supportsOffsetBasedPagingWithoutTotal: false
x-supportsCursorBasedPaging: false
x-supportsCursorBasedPagingWithoutTotal: true
x-supportsPush: false
x-requiresUser: false
x-requiresInternalClient: false
x-disallowUser: false
x-no-merge: false
x-maxSortParameterCount: 10
x-supportsPermissionDeniedResponse: false
summary: Factset Intraday time series data for a notation.
description: >-
Intraday time series data for a notation.<br><br>Pagination to a
previous page is not supported and `pagination.previous` is always
`null`.
requestBody:
description: Request Body
content:
application/json:
schema:
$ref: '#/components/schemas/PostPricesTimeSeriesIntradayListRequest'
required: true
responses:
'200':
$ref: '#/components/responses/PostPricesTimeSeriesIntradayList200Response'
parameters: []
/prices/timeSeries/intraday/subsample/get:
post:
tags:
- Prices
operationId: post/prices/timeSeries/intraday/subsample/get
x-supportsOffsetBasedPaging: false
x-supportsOffsetBasedPagingWithoutTotal: false
x-supportsCursorBasedPaging: false
x-supportsCursorBasedPagingWithoutTotal: false
x-supportsPush: false
x-requiresUser: false
x-requiresInternalClient: false
x-disallowUser: false
x-no-merge: false
x-maxSortParameterCount: 10
x-supportsPermissionDeniedResponse: false
summary: Factset Single subsample intraday data for a notation.
description: >-
Single subsample intraday data for a notation. The subsample may exceed
the entitled time range, but will be based only on ticks that are in the
entitled range.
requestBody:
description: Request Body
content:
application/json:
schema:
$ref: >-
#/components/schemas/PostPricesTimeSeriesIntradaySubsampleGetRequest
required: true
responses:
'200':
$ref: >-
#/components/responses/PostPricesTimeSeriesIntradaySubsampleGet200Response
parameters: []
/prices/timeSeries/intraday/subsample/list:
post:
tags:
- Prices
operationId: post/prices/timeSeries/intraday/subsample/list
x-supportsOffsetBasedPaging: false
x-supportsOffsetBasedPagingWithoutTotal: false
x-supportsCursorBasedPaging: false
x-supportsCursorBasedPagingWithoutTotal: true
x-supportsPush: false
x-requiresUser: false
x-requiresInternalClient: false
x-disallowUser: false
x-no-merge: false
x-maxSortParameterCount: 10
x-supportsPermissionDeniedResponse: false
summary: Factset Subsampled intraday time series data for a notation.
description: >-
Subsampled intraday time series data for a notation. If a subsample's
time range is not entirely within the maximally entitled time range, the
subsample is excluded from the response.<br><br>Pagination to a previous
page is not supported and `pagination.previous` is always `null`.
requestBody:
description: Request Body
content:
application/json:
schema:
$ref: >-
#/components/schemas/PostPricesTimeSeriesIntradaySubsampleListRequest
required: true
responses:
'200':
$ref: >-
#/components/responses/PostPricesTimeSeriesIntradaySubsampleList200Response
parameters: []
components:
schemas:
ErrorMetaObject:
type: object
description: The meta member contains the meta information of the response.
properties:
status:
$ref: '#/components/schemas/StatusObject'
ErrorObject:
type: array
description: >-
The errors member contains additional information about a failed
request.
items:
type: object
properties:
details:
type: string
description: >-
A human-readable, unstructured explanation specific to this
occurrence of the failure.
encryptedDetails:
type: string
description: >-
Base64-encoded, internal details about the error, in addition to
"details".
type:
type: number
format: int32
description: Internal error type of the Foundation API protocol.
attribute:
type: array
description: >-
For a validation error, a reference to the request parameter that
failed validation; otherwise, an empty array.
items:
type: object
properties:
name:
type: string
description: Element of the path denoting the request parameter.
index:
type: number
format: int32
description: >-
If the attribute "name" designates an array, index of the
array element; otherwise the special value -1.
x-property-sort:
- name
- index
x-property-sort:
- details
- encryptedDetails
- type
- attribute
AttributesMember:
type: array
description: Limit the attributes returned in the response to the specified set.
items:
type: string
maxLength: 100
exclusiveMaximum: false
maxItems: 50
uniqueItems: true
LanguageMember:
type: string
format: isoLanguage
description: ISO 639-1 code of the language.
maxLength: 2
minLength: 2
exclusiveMinimum: false
exclusiveMaximum: false
StatusObject:
type: object
properties:
code:
type: number
format: int32
description: >-
The HTTP status code of the response, mirroring the code from the
Status-Line of the HTTP response message (see [RFC2616] section
6.1).
description: The status member contains the status code of the response.
required:
- code
CursorBasedPaginationOutputObject:
type: object
description: Pagination attributes for the cursor-based pagination strategy.
properties:
total:
type: number
format: int32
description: Total number of entries in the result set.
isEstimatedTotal:
type: boolean
description: Flag indicating that the value of `total` is estimated.
next:
type: string
description: >-
The next cursor position to use in the parameter `pagination.cursor`
for an endpoint that supports cursor-based pagination, otherwise
`null`.
previous:
type: string
description: >-
The previous cursor position to use in the parameter
`pagination.cursor` for an endpoint that supports cursor-based
pagination. If a previous cursor position is not supported or
available, `previous` is `null`.
required:
- total
- isEstimatedTotal
- next
- previous
x-property-sort:
- total
- isEstimatedTotal
- next
- previous
CursorBasedPaginationOutputObjectWithoutTotal:
type: object
description: >-
Pagination attributes for the cursor-based pagination strategy; a total
element count is not supported.
properties:
next:
type: string
description: >-
The next cursor position to use in the parameter `pagination.cursor`
for an endpoint that supports cursor-based pagination, otherwise
`null`.
previous:
type: string
description: >-
The previous cursor position to use in the parameter
`pagination.cursor` for an endpoint that supports cursor-based
pagination. If a previous cursor position is not supported or
available, `previous` is `null`.
required:
- next
- previous
x-property-sort:
- next
- previous
OffsetBasedPaginationOutputObject:
type: object
description: Pagination attributes for the offset-based pagination strategy.
properties:
total:
type: number
format: int32
description: Total number of entries in the result set.
isEstimatedTotal:
type: boolean
description: Flag indicating that the value of "total" is estimated.
required:
- total
- isEstimatedTotal
x-property-sort:
- total
- isEstimatedTotal
OffsetBasedPaginationOutputObjectWithoutTotal:
type: object
description: >-
Pagination attributes for the offset-based pagination strategy; a total
element count is not supported.
properties:
hasNext:
type: boolean
description: >-
Flag indicating that a subsequent request with the same parameters,
except that the parameter `pagination.offset` is incremented by
`pagination.limit`, would yield additional results.
required:
- hasNext
x-property-sort:
- hasNext
PartialOutputObject:
type: object
properties:
isPartial:
type: boolean
description: >-
Flag indicating that the response is a possibly incomplete array or
an object containing a possibly incomplete array, due to hitting a
processing time limit. If `true`, some matching results might be
missing from the array, or elements for matching results might be
incorrectly included (for example, when priority sorting would have
removed the element). Depending on the use case, such a response may
be unsuitable.
description: Object denoting that the endpoint response is possibly incomplete.
required:
- isPartial
x-property-sort:
- isPartial
PostVendorChartIQTimeSeriesEodListRequest:
x-property-sort:
- data
- meta
description: Request Body
required:
- data
type: object
properties:
data:
type: object
x-property-sort:
- identifier
- type
- quality
- range
- newestFirst
- adjustments
description: The data member contains the request's primary data.
properties:
identifier:
type: object
x-property-sort:
- value
- type
description: Identifier and type.
properties:
value:
type: string
pattern: >-
^[B-DF-HJ-NP-TV-Z0-9]{6}-[LR]$|^[A-Z0-9.#&*+]{1,47}-[A-Z0-9]{2,4}$|^[0-9]{3,20}$
maxLength: 50
exclusiveMaximum: false
minLength: 3
exclusiveMinimum: false
description: Identifier to resolve.
type:
type: string
description: Type of the identifier.
x-enum-description:
- MDG identifier of a listing.
- FactSet market symbol of a listing.
- >-
Regional FactSet ticker symbol, identifying the primary
listing in the region.
- FactSet Permanent Identifier on listing level.
- >-
Regional FactSet Permanent Identifier, identifying the
primary listing in the region.
enum:
- idNotation
- tickerExchange
- tickerRegion
- fdsPermanentIdentifierListing
- fdsPermanentIdentifierRegional
required:
- value
- type
type:
type: string
description: Type of the price as configured for the customer.
default: trade
x-enum-description:
- Trade price (ordinary, auction, pre or post-trading).
- Bid price.
- Ask price.
- Yield price.
- Estimated price.
enum:
- trade
- bid
- ask
- yield
- estimate
quality:
type: string
description: Quality of the price.
default: DLY
x-enum-description:
- >-
Delayed: intraday prices with an exchange-imposed delay of
usually 15 to 30 minutes.
- >-
End-of-day: prices updated once per day after the close of
trading, possibly with an exchange-imposed delay of several
hours or days.
- >-
Best: choose the price quality with the least delay, as
entitled for the client.
enum:
- DLY
- EOD
- BST
range:
type: object
format: dateRange
x-isClosedInterval: false
properties:
start:
type: string
format: date
description: The starting point of the date range (inclusive).
end:
type: string
format: date
description: The ending point of the date range (exclusive).
x-property-sort:
- start
- end
required:
- start
- end
description: >-
Date range for the time series. A valid date range is between
1900-01-01 and the day after the current day.
newestFirst:
type: boolean
default: false
description: Deliver the chronological last part of the requested data first.
adjustments:
type: object
x-property-sort:
- payout
- split
description: Adjustments values returned.
properties:
payout:
type: boolean
default: false
description: >-
Adjustments are applied for corporate action effects due to
dividends, payouts, or other cash disbursements.
split:
type: boolean
default: true
description: >-
Adjustments are applied for corporate action effects due to
the notation having a split, a reverse split, or a similar
factor-based corporate action.
required:
- identifier
- range
meta:
type: object
description: The meta member contains the meta information of the request.
properties:
attributes:
$ref: '#/components/schemas/AttributesMember'
pagination:
type: object
description: Pagination attributes for the cursor-based pagination strategy.
properties:
cursor:
type: string
maxLength: 50
exclusiveMaximum: false
description: >-
Starting point as returned in the attributes
`pagination.next` or `pagination.previous` by a prior
invocation of this endpoint, or undefined (default).
limit:
type: number
format: int32
minimum: 0
exclusiveMinimum: false
maximum: 5000
exclusiveMaximum: false
default: 20
description: Non-negative maximum number of entries to return.
x-property-sort:
- cursor
- limit
x-property-sort:
- attributes
- pagination
PostVendorChartIQTimeSeriesEodSubsampleGetRequest:
x-property-sort:
- data
- meta
description: Request Body
required:
- data
type: object
properties:
data:
type: object
x-property-sort:
- identifier
- type
- quality
- interval
- adjustments
description: The data member contains the request's primary data.
properties:
identifier:
type: object
x-property-sort:
- value
- type
description: Identifier and type.
properties:
value:
type: string
pattern: >-
^[B-DF-HJ-NP-TV-Z0-9]{6}-[LR]$|^[A-Z0-9.#&*+]{1,47}-[A-Z0-9]{2,4}$|^[0-9]{3,20}$
maxLength: 50
exclusiveMaximum: false
minLength: 3
exclusiveMinimum: false
description: Identifier to resolve.
type:
type: string
description: Type of the identifier.
x-enum-description:
- MDG identifier of a listing.
- FactSet market symbol of a listing.
- >-
Regional FactSet ticker symbol, identifying the primary
listing in the region.
- FactSet Permanent Identifier on listing level.
- >-
Regional FactSet Permanent Identifier, identifying the
primary listing in the region.
enum:
- idNotation
- tickerExchange
- tickerRegion
- fdsPermanentIdentifierListing
- fdsPermanentIdentifierRegional
required:
- value
- type
type:
type: string
description: Type of the price as configured for the customer.
default: trade
x-enum-description:
- Trade price (ordinary, auction, pre or post-trading).
- Bid price.
- Ask price.
- Yield price.
- Estimated price.
enum:
- trade
- bid
- ask
- yield
- estimate
quality:
type: string
description: Quality of the price.
default: DLY
x-enum-description:
- >-
Delayed: intraday prices with an exchange-imposed delay of
usually 15 to 30 minutes.
- >-
End-of-day: prices updated once per day after the close of
trading, possibly with an exchange-imposed delay of several
hours or days.
- >-
Best: choose the price quality with the least delay, as
entitled for the client.
enum:
- DLY
- EOD
- BST
interval:
type: object
format: dateRange
x-isClosedInterval: false
properties:
start:
type: string
format: date
description: 'The starting point of the interval (inclusive). '
end:
type: string
format: date
description: The ending point of the interval (exclusive).
x-property-sort:
- start
- end
required:
- start
- end
descripti
# --- truncated at 32 KB (146 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/factset/refs/heads/main/openapi/real-time-time-series-openapi-original.yml