> ## 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.

# List interviews

> List the interviews in the organization, newest-first. Each entry carries the interview's metadata (when it was conducted, who conducted it and who was interviewed — resolved to people with name, email and company — linked cards, insight counts, whether it has a transcript) and a short text preview; use GET /v1/interviews/{interviewId}/notes, /insights and /transcript for the content. Results are paginated: `nextCursor` is present only when a further page has interviews on it; pass it back as the `cursor` parameter on the next request.



## OpenAPI

````yaml https://api.vistaly.com/v1/swagger.json get /v1/interviews
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:
    get:
      tags:
        - interviews
      summary: List interviews
      description: >-
        List the interviews in the organization, newest-first. Each entry
        carries the interview's metadata (when it was conducted, who conducted
        it and who was interviewed — resolved to people with name, email and
        company — linked cards, insight counts, whether it has a transcript) and
        a short text preview; use GET /v1/interviews/{interviewId}/notes,
        /insights and /transcript for the content. Results are paginated:
        `nextCursor` is present only when a further page has interviews on it;
        pass it back as the `cursor` parameter on the next request.
      parameters:
        - description: Maximum number of interviews to return (1-100). Defaults to 50.
          in: query
          name: limit
          required: false
          schema:
            type: integer
            minimum: 1
            maximum: 100
            default: 50
        - description: >-
            Opaque pagination token returned as `nextCursor` by a previous
            request. Pass it to fetch the next page of results. `limit` may be
            changed between pages.
          in: query
          name: cursor
          required: false
          schema:
            type: string
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ListInterviewsResponse'
          description: Interviews 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:
    ListInterviewsResponse:
      additionalProperties: false
      properties:
        interviews:
          description: The interviews, ordered newest-first.
          items:
            $ref: '#/components/schemas/InterviewItem'
          type: array
        nextCursor:
          description: >-
            Opaque token for fetching the next page of results. Present only
            when a further page has at least one interview; pass it back as the
            `cursor` query parameter. Absent when there are no more results.
          type: string
      required:
        - interviews
      type: object
    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.