openapi: 3.0.2
info:
version: 3.0.0
title: Kensho Extract annotations-async Estimates API
description: "Kensho Extract allows users to quickly transform their unstructured documents into a machine-readable format\
\ that identifies titles, subtitles, paragraphs, tables, and footers detected within the document in their natural reading\
\ order. \nKensho Extract interprets messy page layout, structuring text into cohesive paragraphs that can be effectively\
\ analyzed and searched.
The Kensho Extract API V3 has incorporated changes to how users must call the API.\n\
Please note there are more required fields in API V3 than API V2 (deprecated). The following fields are *mandatory* for\
\ `/v3/extractions`: file, document_type, ocr and enhanced_table_extraction.
API V3 introduces new upload and\
\ download functionality, allowing the upload of the original document and retrieval of the extracted document output\
\ via pre-signed URLs. The pre-signed URLs expire after 15 minutes.
These new endpoints must be called in the following\
\ order.\n - `/v3/extractions/upload-url`\n - followed by POST'ing the document to the `url` provided in the response\n\
\ - `/v3/extractions/upload-complete`\n - `/v3/extractions/download-url/{request_id}`\n - followed by a calling the\
\ GET `output_url` provided in the response\n"
servers:
- url: https://kfinance.kensho.com
tags:
- name: Estimates
paths:
/api/v1/estimates/:
post:
operationId: Get Estimates
description: Get the consensus estimates or guidance for a given company.
requestBody:
content:
application/json:
schema:
$ref: '#/components/schemas/EstimatesRequest'
application/x-www-form-urlencoded:
schema:
$ref: '#/components/schemas/EstimatesRequest'
multipart/form-data:
schema:
$ref: '#/components/schemas/EstimatesRequest'
required: true
security:
- cookieAuth: []
- Kensho_JWT_Auth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/EstimatesResponse'
examples:
ConsensusEstimatesQuarterlyExample:
value:
results:
'24937':
estimate_type: consensus
currency: USD
period_type: quarterly
periods:
FY2025Q4:
period_end_date: '2025-12-31'
estimates:
- name: Revenue Consensus High
value: '3955000000.000000'
- name: Revenue Consensus Low
value: '3806400000.000000'
- name: Revenue Consensus Mean
value: '3881725460.000000'
- name: Revenue Consensus Median
value: '3883000000.000000'
errors: {}
summary: '24937'
description: Indicates a successful request.
'400':
description: Indicates that the input parameters are invalid.
'403':
description: Indicates that the authorization information is missing or invalid.
tags:
- Estimates
/api/v1/estimates/analyst_recommendations/{company_id}:
get:
operationId: Get Analyst Recommendations
description: 'Get analyst recommendations for a given company_id.
Returns counts of analyst recommendations by rating category and an aggregate analyst consensus score. S&P Global
Market Intelligence
standardizes ratings across brokers on a 5-point scale: 1 = Buy, 2 = Outperform, 3 = Hold, 4 = Underperform, 5 = Sell.
If an analyst does not provide a recommendation, S&P Global assigns a rating of ''No Opinion''.'
parameters:
- in: path
name: company_id
schema:
type: integer
required: true
security:
- cookieAuth: []
- Kensho_JWT_Auth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/AnalystRecommendationsResponse'
examples:
ConsensusTargetPriceExample:
value:
results:
'24937':
effective_date: '2026-03-03'
estimates:
- name: Consensus Recommendation
value: '1.936170'
- name: '# of Analysts No Opinion Recommendation - (In-Consensus)'
value: '2.000000'
- name: '# of Analysts Buy Recommendation - (In-Consensus)'
value: '24.000000'
- name: '# of Analysts Sell Recommendation - (In-Consensus)'
value: '1.000000'
- name: '# of Analysts Hold Recommendation - (In-Consensus)'
value: '16.000000'
- name: '# of Analysts Outperform Recommendation - (In-Consensus)'
value: '5.000000'
- name: '# of Analysts Underperform Recommendation - (In-Consensus)'
value: '1.000000'
errors: {}
summary: '24937'
description: Indicates a successful request.
'400':
description: Indicates that the input parameters are invalid.
'403':
description: Indicates that the authorization information is missing or invalid.
tags:
- Estimates
/api/v1/estimates/consensus_target_price/{company_id}:
get:
operationId: Get Consensus Target Price
description: Get the consensus target price estimates for a given company_id.
parameters:
- in: path
name: company_id
schema:
type: integer
required: true
security:
- cookieAuth: []
- Kensho_JWT_Auth: []
responses:
'200':
content:
application/json:
schema:
$ref: '#/components/schemas/ConsensusTargetPriceResponse'
examples:
ConsensusTargetPriceExample:
value:
results:
'24937':
currency: USD
effective_date: '2026-03-03'
estimates:
- name: Target Price Consensus Mean
value: '293.289020'
- name: Target Price Consensus Median
value: '300.000000'
- name: Target Price Consensus High
value: '350.000000'
- name: Target Price Consensus Low
value: '205.000000'
- name: 'Target Price - # of Estimates'
value: '41.000000'
- name: Target Price - Standard Deviation
value: '32.468260'
errors: {}
summary: '24937'
description: Indicates a successful request.
'400':
description: Indicates that the input parameters are invalid.
'403':
description: Indicates that the authorization information is missing or invalid.
tags:
- Estimates
components:
schemas:
EstimatesRequest:
type: object
description: Request fields for get_estimates
properties:
company_id:
type: integer
estimate_type:
nullable: true
default: consensus
oneOf:
- $ref: '#/components/schemas/EstimateTypeEnum'
- $ref: '#/components/schemas/NullEnum'
period_type:
nullable: true
default: quarterly
oneOf:
- $ref: '#/components/schemas/EstimatesRequestPeriodTypeEnum'
- $ref: '#/components/schemas/NullEnum'
fiscal_start_year:
type: integer
maximum: 9999
minimum: 1000
nullable: true
fiscal_end_year:
type: integer
maximum: 9999
minimum: 1000
nullable: true
fiscal_start_quarter:
nullable: true
oneOf:
- $ref: '#/components/schemas/FiscalStartQuarterEnum'
- $ref: '#/components/schemas/NullEnum'
fiscal_end_quarter:
nullable: true
oneOf:
- $ref: '#/components/schemas/FiscalEndQuarterEnum'
- $ref: '#/components/schemas/NullEnum'
num_periods_forward:
type: integer
maximum: 99
minimum: 0
nullable: true
num_periods_backward:
type: integer
maximum: 99
minimum: 0
nullable: true
required:
- company_id
FiscalStartQuarterEnum:
enum:
- 1
- 2
- 3
- 4
type: integer
description: '* `1` - 1
* `2` - 2
* `3` - 3
* `4` - 4'
ConsensusTargetPrice:
type: object
properties:
currency:
type: string
nullable: true
effective_date:
type: string
format: date
nullable: true
estimates:
type: array
items:
$ref: '#/components/schemas/ConsensusTargetPriceItem'
required:
- currency
- effective_date
- estimates
EstimatesRequestPeriodTypeEnum:
enum:
- annual
- quarterly
- semi_annual
type: string
description: '* `annual` - annual
* `quarterly` - quarterly
* `semi_annual` - semi_annual'
FiscalEndQuarterEnum:
enum:
- 1
- 2
- 3
- 4
type: integer
description: '* `1` - 1
* `2` - 2
* `3` - 3
* `4` - 4'
AnalystRecommendationsResponse:
type: object
properties:
results:
type: object
additionalProperties:
$ref: '#/components/schemas/AnalystRecommendations'
errors:
type: object
additionalProperties:
type: string
title: error
required:
- errors
- results
AnalystRecommendations:
type: object
properties:
effective_date:
type: string
format: date
nullable: true
estimates:
type: array
items:
$ref: '#/components/schemas/AnalystRecommendationsItem'
required:
- effective_date
- estimates
AnalystRecommendationsItem:
type: object
properties:
name:
type: string
value:
type: string
format: decimal
pattern: ^-?\d{0,22}(?:\.\d{0,6})?$
nullable: true
required:
- name
- value
EstimatesPeriod:
type: object
properties:
period_end_date:
type: string
format: date
estimates:
type: array
items:
$ref: '#/components/schemas/EstimatesLineItem'
required:
- estimates
- period_end_date
EstimateTypeEnum:
enum:
- consensus
- guidance
type: string
description: '* `consensus` - consensus
* `guidance` - guidance'
EstimatesItemResponse:
type: object
properties:
estimate_type:
$ref: '#/components/schemas/EstimateTypeEnum'
currency:
type: string
nullable: true
period_type:
type: string
nullable: true
periods:
type: object
additionalProperties:
$ref: '#/components/schemas/EstimatesPeriod'
required:
- currency
- period_type
- periods
EstimatesLineItem:
type: object
properties:
name:
type: string
value:
type: string
format: decimal
pattern: ^-?\d{0,22}(?:\.\d{0,6})?$
nullable: true
required:
- name
- value
ConsensusTargetPriceItem:
type: object
properties:
name:
type: string
value:
type: string
format: decimal
pattern: ^-?\d{0,22}(?:\.\d{0,6})?$
nullable: true
required:
- name
- value
ConsensusTargetPriceResponse:
type: object
properties:
results:
type: object
additionalProperties:
$ref: '#/components/schemas/ConsensusTargetPrice'
errors:
type: object
additionalProperties:
type: string
title: error
required:
- errors
- results
EstimatesResponse:
type: object
properties:
results:
type: object
additionalProperties:
$ref: '#/components/schemas/EstimatesItemResponse'
errors:
type: object
additionalProperties:
type: string
title: error
required:
- errors
- results
NullEnum:
enum:
- null
securitySchemes:
bearerAuth:
type: http
scheme: bearer
bearerFormat: JWT