FactSet Natural Language Processing API

These APIs leverage natural language processing to help extract meaningful data from unstructured text.

OpenAPI Specification

natural-language-processing-openapi-original.yml Raw ↑
openapi: 3.0.1
info:
  title: Factset Natural Language Processing API
  description: >-
    APIs that leverage Natural Language Processing to help extract meaningful
    data from unstructured text
  contact:
    name: FactSet Research Systems
    url: https://developer.factset.com/contact
    email: [email protected]
  version: 1.3.0
  license:
    name: Apache License, Version 2.0
    url: https://www.apache.org/licenses/LICENSE-2.0
servers:
  - url: https://api.factset.com/cognitive/nlp/v1
tags:
  - name: Ner
  - name: Qna
  - name: Summarization
  - name: Themes
paths:
  /themes:
    post:
      description: >-
        Endpoint to extract themes from provided text. Optionally, can include
        sentiment for each theme extracted. Please check the schema(s) for each
        of the status codes for more details.
      operationId: themesExtractThemes
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/ThemesParametersRoot'
        required: true
      responses:
        '202':
          $ref: '#/components/responses/202'
        '400':
          $ref: '#/components/responses/400'
        '401':
          $ref: '#/components/responses/401'
        '500':
          $ref: '#/components/responses/500'
      summary: Factset Endpoint to begin theme extraction job
      tags:
        - Themes
  /themes/{id}:
    get:
      description: >-
        Endpoint to obtain the results from the original themes task request.
        The `id` parameter represents the identifier of the task generated from
        the POST request which created the task. Once the task is complete, the
        result can be fetched with this endpoint.
      operationId: themesGetThemes
      parameters:
        - $ref: '#/components/parameters/id'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ThemeSentimentsRoot'
          description: OK
        '202':
          $ref: '#/components/responses/202'
        '404':
          $ref: '#/components/responses/404'
        '500':
          $ref: '#/components/responses/500'
      summary: Factset Endpoint to get a theme (and sentiments if requested) job result
      tags:
        - Themes
  /themes/{id}/status:
    get:
      description: >-
        Endpoint to obtain the completion status of the themes task request. The
        `id` parameter represents the task.
      operationId: themesGetStatus
      parameters:
        - $ref: '#/components/parameters/id'
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskRoot'
          description: Created
          headers:
            Location:
              $ref: '#/components/headers/Location'
        '202':
          $ref: '#/components/responses/202'
        '404':
          $ref: '#/components/responses/404'
        '500':
          $ref: '#/components/responses/500'
      summary: Factset Endpoint to get the completion status of a themes job
      tags:
        - Themes
  /summarization/headline:
    post:
      parameters: []
      operationId: summarizationHeadline
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SummarizationRequest'
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SummarizationResultID'
          description: Unique Result ID
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationError'
          description: Bad Request
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SummarizationHTTPError'
          description: Access Denied
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SummarizationHTTPError'
          description: Internal Server Error
      summary: Factset Endpoint to generate a headline from text
      description: Generate a headline-length summary of plain text
      tags:
        - Summarization
  /summarization/headline-and-summary:
    post:
      parameters: []
      operationId: summarizationHeadlineAndSummary
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SummarizationRequest'
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SummarizationResultID'
          description: Unique Result ID
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationError'
          description: Bad Request
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SummarizationHTTPError'
          description: Access Denied
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SummarizationHTTPError'
          description: Internal Server Error
      summary: Factset Endpoint to summarize and generate a headline from text
      description: >-
        Generate both a paragraph-length, and headline-length summary of plain
        text
      tags:
        - Summarization
  /summarization/summary:
    post:
      parameters: []
      operationId: summarizationSummary
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/SummarizationRequest'
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SummarizationResultID'
          description: Unique Result ID
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ValidationError'
          description: Bad Request
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SummarizationHTTPError'
          description: Access Denied
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SummarizationHTTPError'
          description: Internal Server Error
      summary: Factset Endpoint to summarize text
      description: Generate a paragraph-length summary of plain text
      tags:
        - Summarization
  /ner/entities:
    post:
      parameters: []
      operationId: nerEntities
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/NERInputSchema'
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NERResponseSchema'
          description: Successful response
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/NERResponseSchema'
          description: Validation error
      summary: Factset Endpoint to detect entities from text
      description: Detect entities (People, Places, Organizations, etc.) in plain text
      tags:
        - Ner
  /summarization/result/{resultId}:
    get:
      operationId: summarizationResult
      parameters:
        - in: path
          name: resultId
          required: true
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/SummarizationResult'
          description: Successful response
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPError'
          description: Bad Request
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPError'
          description: Access Denied
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPError'
          description: Not found
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPError'
          description: Internal Server Error
      summary: Factset Endpoint to obtain result of a particular summarization job
      description: >-
        Retrieve the summarization result from a job started with the other
        summarization endpoints
      tags:
        - Summarization
  /qna/answers:
    post:
      description: >-
        Endpoint to create a task submission by providing plain text and
        question(s). The underlying model will answer the question. The created
        task needs to be polled to obtain the results. Please check the
        schema(s) for each of the status codes for more details about the task.
      operationId: qnaPostQuestion
      parameters: []
      requestBody:
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/QnAAnswerParametersRoot'
        required: true
      responses:
        '202':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskRoot'
          description: Accepted
          headers:
            Location:
              description: >-
                The `Location` response header indicates the URL to redirect a
                page to.
              required: true
              schema:
                type: string
        '400':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPErrorRoot'
          description: >-
            The browser (or proxy) sent a request that this server could not
            understand.
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPErrorRoot'
          description: >-
            The server could not verify that you are authorized to access the
            URL requested. You either supplied the wrong credentials (e.g. a bad
            password), or your browser doesn't understand how to supply the
            credentials required.
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPErrorRoot'
          description: >-
            The server encountered an internal error and was unable to complete
            your request. Either the server is overloaded or there is an error
            in the application.
      summary: Factset Endpoint to submit a question for answer(s)
      tags:
        - Qna
  /qna/answers/{id}:
    get:
      description: >-
        Endpoint to obtain the results from the original Q&A task request. The
        `id` parameter represents the identifier from the task and comes from
        the POST request which created the task. Once the task is complete, the
        result can be fetched with this endpoint.
      operationId: qnaGetAnswers
      parameters:
        - description: >-
            Identifier from the Question & Answer task and comes from the POST
            request which created the task
          in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/QnAAnswerRoot'
          description: OK
        '202':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskRoot'
          description: Accepted
          headers:
            Location:
              description: >-
                The `Location` response header indicates the URL to redirect a
                page to.
              required: true
              schema:
                type: string
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPErrorRoot'
          description: >-
            The server could not verify that you are authorized to access the
            URL requested. You either supplied the wrong credentials (e.g. a bad
            password), or your browser doesn't understand how to supply the
            credentials required.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPErrorRoot'
          description: >-
            The requested URL was not found on the server. If you entered the
            URL manually please check your spelling and try again.
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPErrorRoot'
          description: >-
            The server encountered an internal error and was unable to complete
            your request. Either the server is overloaded or there is an error
            in the application.
      summary: Factset Endpoint to get the answer(s)
      tags:
        - Qna
  /qna/answers/{id}/status:
    get:
      description: >-
        Endpoint to obtain the status of the Q&A task request. The `id`
        parameter represents the identifier of the task created and comes from
        the POST request which created the task.
      operationId: qnaGetStatus
      parameters:
        - description: >-
            Identifier from the Question & Answer task and comes from the POST
            request which created the task
          in: path
          name: id
          required: true
          schema:
            type: string
      responses:
        '201':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskRoot'
          description: Created
          headers:
            Location:
              description: >-
                The `Location` response header indicates the URL to redirect a
                page to.
              required: true
              schema:
                type: string
        '202':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/TaskRoot'
          description: Accepted
          headers:
            Location:
              description: >-
                The `Location` response header indicates the URL to redirect a
                page to.
              required: true
              schema:
                type: string
        '401':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPErrorRoot'
          description: >-
            The server could not verify that you are authorized to access the
            URL requested. You either supplied the wrong credentials (e.g. a bad
            password), or your browser doesn't understand how to supply the
            credentials required.
        '404':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPErrorRoot'
          description: >-
            The requested URL was not found on the server. If you entered the
            URL manually please check your spelling and try again.
        '500':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/HTTPErrorRoot'
          description: >-
            The server encountered an internal error and was unable to complete
            your request. Either the server is overloaded or there is an error
            in the application.
      summary: Factset Endpoint to get the completion status for a Q&A request
      tags:
        - Qna
components:
  headers:
    Location:
      description: The `Location` response header indicates the URL to redirect a page to.
      schema:
        type: string
  parameters:
    id:
      description: Long running task identifier
      in: path
      name: id
      required: true
      schema:
        type: string
  responses:
    '202':
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/TaskRoot'
      description: Accepted
      headers:
        Location:
          $ref: '#/components/headers/Location'
    '400':
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/HTTPErrorRoot'
      description: >-
        The browser (or proxy) sent a request that this server could not
        understand.
    '401':
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/HTTPErrorRoot'
      description: >-
        The server could not verify that you are authorized to access the URL
        requested. You either supplied the wrong credentials (e.g. a bad
        password), or your browser doesn't understand how to supply the
        credentials required.
    '404':
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/HTTPErrorRoot'
      description: >-
        description: The requested URL was not found on the server. If you
        entered the URL manually please check your spelling and try again.
    '500':
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/HTTPErrorRoot'
      description: >-
        The server encountered an internal error and was unable to complete your
        request. Either the server is overloaded or there is an error in the
        application.
  schemas:
    QnAAnswer:
      description: Schema that defines the answer with a confidence score.
      properties:
        answer:
          description: The machine-generated answer to the question
          example: Joel Wilson
          type: string
        score:
          description: The confidence score associated to the answer
          example: 0.8831543922424316
          type: number
      required:
        - answer
        - score
      type: object
    QnAAnswerParameters:
      description: >-
        Schema that defines the parameters needed to be supplied for generating
        answer(s).
      properties:
        input:
          description: The text input that provides the context
          example: >2

            Matchbox.io Uses Voice-First Games as A Natural Way of Learning

            matchbox.ioCredit: matchbox.io

            Alexa and gaming have been rubbing shoulders since day one. From
            guiding children through LEGO adventures to multi-player trivia
            games for bored drivers, Voice has proven to be the new frontier of
            gaming.

            When voice assistants first bobbed into the mainstream, marketing
            solution architect and data scientist Joel Wilson immediately saw
            the potential of Voice not only for games, but for education. He
            started his venture with the Alexa skill Question of the Day, a
            simple trivia game that poses a different question each day. Over
            4,000 five-star reviews and hundreds of thousands of users later, it
            has become a routine skill for people happy to learn something new
            every day.

            "We're on a mission to enable frictionless learning," Wilson told
            Amazon. "We've just scratched the surface of how we can do that with
            voice-first games."

            Meet matchbox.io

            In 2017, Wilson founded the voice-first gaming company matchbox.io,
            dedicated to creating interactive, educational experiences through
            Amazon Alexa and, more recently, Samsung Bixby. In just a few years,
            matchbox.io has become a recognized leader in educational games on
            voice-first devices.

            With Question of the Day growing into one of the most popular and
            highest rated skills in the Alexa Skill Store, Wilson and his team
            of Data Scientists and Education Innovators immersed themselves in
            helping people learn more about the world through Voice. Before
            long, they launched another educational skill called Kids Quiz.

            Kids Quiz poses new questions every day for children ages 5-12, from
            animals and science to brainteasers and fun facts. They can also
            collect stars and unlock surprises as they go. Another addition to
            the matchbox.io repertoire is Three Questions, which provides, well,
            three questions a day rather than just one. Like their other skills,
            players can earn points and unlock bonus content.

            With three successful voice-first experiences under their belt,
            matchbox.io is marching forward with their mission to leverage Voice
            to disperse a little bit more knowledge to their users every single
            day.


            Why Voice for learning?

            At this point, the question is almost rhetorical. We've seen games
            capture the short attention spans of children, teach stubborn
            students and professionals new skills, and hold the curiosity of
            busy adults for decades. With Voice, the captivating effect of
            gaming is multiplied by the prospect of playing with increasingly
            less effort. There are no controls to untangle (or fight over), no
            keyboard to pound repeatedly, and no limitation for people with
            limited vision or mobility.

            "Voice is the perfect, most accessible interface for gaming," says
            Wilson in an Amazon blog post. "We can tailor the experience to
            customers wants and needs, so they can learn something quick, hear
            more in-depth info about a particular fact, or settle in for an
            extended game play."

            With over 6 million users playing his company's voice-first gaming
            apps, it's clear that the marriage between Voice and traditional
            learning is set for the long-run. The question now is which gaming
            companies will take advantage of it.


            The future of voice-first gaming

            Using Voice for interactive learning is all well and good, but what
            about the business side of things?

            Wilson knows a few things about this too. Feeling confident about
            their skills' continued popularity, they made a move to monetize
            them with In-Skill Purchasing (ISP). This feature allows the company
            to fund the creation of more educational experiences by adding paid,
            premium content to their apps. This way, they can keep their users
            engaged while safely sustaining their business.

            Wilson believes that this is the future of voice-first gaming
            industry. In his eyes, all you need is a good idea, quality content,
            and the smarts to know how and when to monetize it. As voice
            assistants and devices evolve, however, so will the methods to run a
            successful business with them. But Wilson is already dabbling in new
            ways to make his passion for learning and gaming a long-term
            venture.

            "There's still a lot to be explored with Voice gaming," says Wilson.

            To learn so much more about Voice and gaming experiences, you'll be
            excited to know that Wilson will be at VOICE Summit to share design
            and strategy insights alongside equally bright minds from Gamefuly,
            Drivetime, and V Group Inc.


            Don't miss their talk "Gaming in the voice-first era," and make sure
            you stick around for hundreds more sessions, workshops, expert
            panels, and our exclusive VOICE Awards dinner. It's the world's
            largest voice tech event and we're pulling out all the stops. To
            join us at our annual showdown and have a summer you'll never
            forget, snatch one of the very last tickets!
          maxLength: 10000
          minLength: 1
          type: string
        numberOfAnswers:
          default: 2
          description: Number of answers for the question
          example: 2
          maximum: 10
          minimum: 1
          type: integer
        question:
          description: Question associated to the provided context
          example: Who is the founder?
          maxLength: 1000
          minLength: 1
          type: string
      required:
        - input
        - question
      type: object
    QnAAnswerParametersRoot:
      description: >-
        Schema that envelopes the `QnAAnswerParameters` and include additional
        `meta` (if available).
      properties:
        data:
          $ref: '#/components/schemas/QnAAnswerParameters'
        meta:
          description: Any associated metadata
          type: object
      required:
        - data
      type: object
    QnAAnswerRoot:
      description: >-
        Schema that envelopes the `QnAAnswer` and include additional `meta` (if
        available).
      properties:
        data:
          items:
            $ref: '#/components/schemas/QnAAnswer'
          type: array
        meta:
          description: Any associated metadata
          type: object
      required:
        - data
      type: object
    ErrorSource:
      description: Schema that defines the source of the error.
      properties:
        parameter:
          description: >-
            A string indicating which path or URI query parameter caused the
            error.
          type: string
        pointer:
          description: More details pointing to the error.
          type: string
      required:
        - parameter
        - pointer
      type: object
    HTTPError:
      description: Schema that defines HTTP error(s).
      properties:
        code:
          description: HTTP Status Code
          type: string
        detail:
          description: Error detail (if any)
          type: string
        id:
          description: The unique identifier detailing the error(s)
          format: uuid
          type: string
        source:
          $ref: '#/components/schemas/ErrorSource'
        title:
          description: Error title
          type: string
      required:
        - code
        - id
        - title
      type: object
    HTTPErrorRoot:
      description: Schema that defines HTTP error(s).
      properties:
        errors:
          description: List of errors
          items:
            $ref: '#/components/schemas/HTTPError'
          type: array
      required:
        - errors
      type: object
    SummarizationRequest:
      properties:
        text:
          description: The text that needs to be summarized
          example: >-
            Advanced Energy Transforms Indoor Farming With Intelligent New
            Lighting Power and Control System Friday, December 11, 2020 01:00:00
            PM (GMT)Innovative technology breaks down barriers to indoor,
            vertical and greenhouse farming by reducing power consumption,
            cutting costs and increasing crop yield Advanced Energy (Nasdaq:
            AEIS) – a global leader in highly engineered, precision power
            conversion, measurement, and control solutions – today unveiled its
            newest lighting and power control system for indoor, vertical and
            greenhouse farming. This press release features multimedia. Advanced
            Energy's new Artesyn iTS provides the industry's first solution for
            switching or sharing a single power source between two different
            rooms. This reduces installation costs by cutting the number of iHP
            power supplies needed in half and it substantially reduces ongoing
            utility costs. (Photo: Business Wire)AE's new lighting and power
            system transforms the use of LED technology in horticultural
            lighting systems, which plays a fundamental role in cutting-edge
            farming practices that can address production challenges in food,
            pharmaceutical ingredients, plants and flowers. Utilizing AE's
            system, customers reduce their power conversion costs by as much as
            50 percent, significantly lower installation and operating costs,
            and increase the quality of crop yield. "Our groundbreaking
            lighting, power and control system delivers significant improvements
            over conventional lighting solutions and opens up new opportunities
            for the industry," said Joe Voyles, vice president, industrial
            marketing, at Advanced Energy. "We are transforming our customers'
            operations by both reducing the amount of needed equipment and
            improving the efficiency of the lighting systems, thereby reducing
            cost and energy spend. Not only do these innovative new products
            increase the efficiency and quality of fruit and vegetable
            production, but they also open the door to establishing indoor
            farming facilities in harsh environments anywhere in the world." The
            new system consists of the patented Artesyn iTS (intelligent
            Transfer Switch) and iHPS configurable power supply. Alongside
            Artesyn's compact new 12 kW 300 VDC module, AE delivers a
            cost-effective platform for the most advanced indoor farming
            applications. The system is estimated to produce a 38 percent
            savings to lighting power and control installation cost, while
            eliminating substantial amounts of wasted energy. The new iHPS is a
            "short" version of AE's market-leading iHP power supply. The shorter
            design allows for more space within the lighting and power cabinet
            for other crucial components, reduces the weight and cost, and
            increases the life of the system. The new iTS provides the
            industry's first solution for switching or sharing a single power
            source between two different rooms. This reduces installation costs
            by cutting the number of iHP power supplies needed in half and it
            substantially reduces ongoing utility costs.
          title: Text
          type: string
      required:
        - text
      type: object
    SummarizationResult:
      properties:
        headline:
          description: A short headline generated for the input text.
          example: >-
            Advanced Energy unveils new lighting and power control system for
            indoor, vertical and greenhouse farming.
          type: string
        summary:
          description: The generated summary for the input text.
          example: >-
            Advanced Energy unveiled its newest lighting and power control
            system for indoor, vertical and greenhouse farming. The new system
            consists of the patented Artesyn iTS (intelligent Transfer Switch)
            and iHPS power supply. Alongside Artesyn's compact new 12 kW 300 VDC
            module, AE delivers a cost-effective platform for the most advanced
            indoor farming applications. The system is estimated to produce a 38
            percent savings to lighting power and control installation cost,
            while eliminating substantial amounts of wasted energy.
          type: string
      type: object
    SummarizationResultID:
      properties:
        result_id:
          description: ID for retrieving the summary result
          title: ID
          type: string
      type: object
    Task:
      description: Schema that represents a long-running process/task.
      properties:
        id:
          description: The task identifier
          example: ca509a4a-2ec9-4770-817a-f1caac18c95c
          format: uuid
          type: string
        startedAt:
          description: The date time the task started (UTC).
          example: '2022-10-31T16:31:30.423086'
          format: date-time
          type: string
        status:
          description: >

# --- truncated at 32 KB (41 KB total) ---
# Full source: https://raw.githubusercontent.com/api-evangelist/factset/refs/heads/main/openapi/natural-language-processing-openapi-original.yml