> ## Documentation Index
> Fetch the complete documentation index at: https://docs.vistaly.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Get interview notes

> Retrieve the notes written on an interview (the interview's notepad — the `body` given when it was created, plus anything added in the app) and its AI-generated summary, both as plain text, together with the interview's metadata. Pass `format=json` to also receive the notes as a Tiptap JSON document with their structure. The transcript is not included; use GET /v1/interviews/{interviewId}/transcript for it.



## OpenAPI

````yaml https://api.vistaly.com/v1/swagger.json get /v1/interviews/{interviewId}/notes
openapi: 3.1.0
info:
  contact:
    email: support@vistaly.com
    name: Vistaly Support Team
  description: >-
    Vistaly's public API for interacting with our platform, enabling developers
    to integrate with various features such as feedback, cards, and system
    health.
  termsOfService: https://vistaly.com/terms-of-service
  title: Vistaly API
  version: '2026-09-05'
servers:
  - description: Production server
    url: https://api.vistaly.com
security: []
tags:
  - description: System-related endpoints to interact with the overall service.
    name: system
  - description: >-
      Endpoints related to card management, including the creation and
      modification of card metrics and related data.
    externalDocs:
      description: Learn more about Cards
      url: https://docs.vistaly.com/en/card-types/overview
    name: cards
  - description: >-
      Endpoints for handling insights data, such as user feedback and interview
      records.
    externalDocs:
      description: Learn more about Insights
      url: https://docs.vistaly.com/en/insights/overview
    name: insights
paths:
  /v1/interviews/{interviewId}/notes:
    get:
      tags:
        - interviews
      summary: Get interview notes
      description: >-
        Retrieve the notes written on an interview (the interview's notepad —
        the `body` given when it was created, plus anything added in the app)
        and its AI-generated summary, both as plain text, together with the
        interview's metadata. Pass `format=json` to also receive the notes as a
        Tiptap JSON document with their structure. The transcript is not
        included; use GET /v1/interviews/{interviewId}/transcript for it.
      parameters:
        - description: The unique identifier for the interview
          in: path
          name: interviewId
          required: true
          schema:
            type: string
        - description: >-
            Response format for the notes. `text` (default) returns plain text
            in `content`; `json` additionally returns the notes as a Tiptap JSON
            document in `contentDocument`.
          in: query
          name: format
          required: false
          schema:
            type: string
            enum:
              - text
              - json
            default: text
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/GetInterviewNotesResponse'
          description: Interview notes retrieved successfully
        '400':
          description: Bad request
          content:
            application/json:
              example:
                message: Bad request
              schema:
                $ref: '#/components/schemas/MessageResponse'
        '401':
          description: Unauthorized
          content:
            application/json:
              example:
                message: Unauthorized
              schema:
                $ref: '#/components/schemas/MessageResponse'
        '403':
          description: Forbidden
          content:
            application/json:
              example:
                message: Forbidden
              schema:
                $ref: '#/components/schemas/MessageResponse'
        '500':
          description: Internal Server Error
          content:
            application/json:
              example:
                message: Internal server error
              schema:
                $ref: '#/components/schemas/MessageResponse'
      security:
        - bearerAuth: []
components:
  schemas:
    GetInterviewNotesResponse:
      description: An interview with its notes and AI summary.
      allOf:
        - $ref: '#/components/schemas/InterviewItem'
        - type: object
          properties:
            content:
              description: >-
                The interview's notes as plain text. Empty when no notes were
                written.
              type: string
            contentDocument:
              description: >-
                The notes as a Tiptap JSON document (`{ type: "doc", content:
                [...] }`), preserving headings, lists, links and insight marks
                that plain text drops. Only present when `format=json` was
                requested.
              type: object
              additionalProperties: true
            summary:
              description: >-
                The AI-generated summary of the interview as plain text. Empty
                when none was generated.
              type: string
          required:
            - content
            - summary
    MessageResponse:
      additionalProperties: false
      properties:
        message:
          example: System provided message
          type: string
      type: object
    InterviewItem:
      additionalProperties: false
      description: A single interview.
      properties:
        id:
          description: The unique identifier for the interview.
          type: string
        capturedAt:
          description: ISO 8601 timestamp of when the interview was conducted.
          format: date-time
          type: string
        createdAt:
          description: ISO 8601 timestamp of when the interview record was created.
          format: date-time
          type: string
        source:
          description: Where the interview originated (e.g. "vistaly-api", "direct").
          type: string
        sourceUrl:
          description: Optional link to where the interview originated.
          type: string
        textPreview:
          description: A short preview of the interview's summary or notes. May be empty.
          type: string
        cardIds:
          description: IDs of the cards this interview is linked to via insights.
          items:
            type: string
          type: array
        customerUserIds:
          description: IDs of the customer users who were interviewed.
          items:
            type: string
          type: array
        interviewerUserIds:
          description: IDs of the organization members who conducted the interview.
          items:
            type: string
          type: array
        insightCount:
          description: >-
            The number of accepted insights on the interview: what GET
            /v1/interviews/{interviewId}/insights returns. AI suggestions the
            author has not accepted are counted in `suggestedInsightCount`
            instead. Normally equal to the length of that endpoint's `insights`
            array, but it can exceed it in an edge case: the count is derived
            from every fragment of the interview document, while the endpoint
            reads highlights from the notes and transcript only. Do not assume
            the two are equal.
          type: integer
        transcriptType:
          description: >-
            How the transcript was captured: `media` for an uploaded recording
            that was transcribed, `text` for a pasted transcript. Absent when
            the interview has no transcript.
          enum:
            - media
            - text
          type: string
        processed:
          description: >-
            Whether the interview's processing — transcription and AI analysis —
            has finished. Note this differs from `FeedbackItem.processed`, which
            means the feedback was analyzed for insights.
          type: boolean
        appUrl:
          description: A link to view the interview in the Vistaly app.
          type: string
        interviewees:
          description: >-
            The interviewed customers, resolved to people. An id that appears in
            `customerUserIds` but not here could not be resolved: its record is
            gone, or the batched lookup came back short. Absence here is not
            proof the person was deleted.
          items:
            $ref: '#/components/schemas/InterviewInterviewee'
          type: array
        interviewers:
          description: >-
            The organization members who conducted the interview, resolved to
            people. An id that appears in `interviewerUserIds` but not here
            could not be resolved; see `interviewees`.
          items:
            $ref: '#/components/schemas/InterviewInterviewer'
          type: array
        suggestedInsightCount:
          description: >-
            The number of AI-suggested insights awaiting the author's decision.
            Not returned by the insights endpoint.
          type: integer
      required:
        - id
        - source
        - cardIds
        - customerUserIds
        - interviewerUserIds
        - interviewees
        - interviewers
        - insightCount
        - suggestedInsightCount
        - processed
        - appUrl
      type: object
    InterviewInterviewee:
      additionalProperties: false
      description: A customer who was interviewed.
      properties:
        id:
          description: The customer user's ID.
          type: string
        name:
          description: 'Display name: full name, falling back to email, then id.'
          type: string
        email:
          description: The person's email, when recorded.
          type: string
        company:
          additionalProperties: false
          description: The company the person belongs to, when one is recorded.
          properties:
            id:
              description: The company's ID.
              type: string
            name:
              description: The company's name, when recorded.
              type: string
            website:
              description: The company's website, when recorded.
              type: string
          required:
            - id
          type: object
      required:
        - id
        - name
      type: object
    InterviewInterviewer:
      additionalProperties: false
      description: An organization member who conducted an interview.
      properties:
        id:
          description: The user's ID.
          type: string
        name:
          description: 'Display name: full name, falling back to email, then id.'
          type: string
        email:
          description: The user's email, when recorded.
          type: string
      required:
        - id
        - name
      type: object
  securitySchemes:
    bearerAuth:
      scheme: bearer
      type: http

````

This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.