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

# List interviews

> Retrieve interviews for a project.

- Admins see all interviews in the project.
- Other members see only interviews assigned to them or that they created.

Results are ordered newest first, with interviews of the same campaign
kept contiguous so clients can render campaign groups across pages.




## OpenAPI

````yaml /api-reference/openapi-public.yaml get /projects/{project_id}/interviews/
openapi: 3.0.3
info:
  title: Clarifeye Platform API — Public API
  description: >
    Forward-facing, supported REST API for new integrators of the Clarifeye
    Platform.


    Covers the curated public surface: authentication, knowledge management

    (documents), users & teams, signals, and tool execution. New integrations

    should target these endpoints.


    ## Authentication

    All endpoints require authentication. Include the Authorization header in
    every request using either format:

    - `Authorization: Token <token_key>`

    - `Authorization: Bearer <token_key>`
  version: 1.0.0
  contact:
    name: Clarifeye Support
servers:
  - url: https://eu.app.clarifeye.ai/api/v1
    description: EU
  - url: https://us.app.clarifeye.ai/api/v1
    description: US
security:
  - BearerAuth: []
  - TokenAuth: []
tags:
  - name: Users
    description: Manage users within a project
  - name: Invitations
    description: Manage project invitations
  - name: Documents
    description: Manage documents within a project
  - name: Signals
    description: Submit signals about the project's content for domain experts to review
  - name: Tools
    description: Execute configured AI tools with custom parameters
  - name: Interviews
    description: Assign and review structured interview conversations
paths:
  /projects/{project_id}/interviews/:
    get:
      tags:
        - Interviews
      summary: List interviews
      description: >
        Retrieve interviews for a project.


        - Admins see all interviews in the project.

        - Other members see only interviews assigned to them or that they
        created.


        Results are ordered newest first, with interviews of the same campaign

        kept contiguous so clients can render campaign groups across pages.
      operationId: listInterviews
      parameters:
        - $ref: '#/components/parameters/ProjectId'
        - name: assigned_to
          in: query
          description: >-
            Set to "me" to return only interviews assigned to (or created by)
            the requesting user.
          schema:
            type: string
            enum:
              - me
        - name: status
          in: query
          description: >-
            Filter by status. Comma-separated for multiple values (e.g.
            "pending,in_progress").
          schema:
            type: string
        - name: campaign
          in: query
          description: >
            Filter by campaign: a campaign UUID for that campaign's interviews,
            or

            the literal "none" for interviews without a campaign.
          schema:
            type: string
        - name: text
          in: query
          description: Case-insensitive search over the interview name and transcript.
          schema:
            type: string
        - $ref: '#/components/parameters/Limit'
        - $ref: '#/components/parameters/Offset'
      responses:
        '200':
          description: Successful response
          content:
            application/json:
              schema:
                allOf:
                  - $ref: '#/components/schemas/PaginatedResponse'
                  - type: object
                    properties:
                      results:
                        type: array
                        items:
                          $ref: '#/components/schemas/InterviewListItem'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '403':
          $ref: '#/components/responses/Forbidden'
        '404':
          $ref: '#/components/responses/NotFound'
components:
  parameters:
    ProjectId:
      name: project_id
      in: path
      required: true
      description: UUID of the project
      schema:
        type: string
        format: uuid
    Limit:
      name: limit
      in: query
      description: Maximum number of results per page
      schema:
        type: integer
        default: 100
        minimum: 1
        maximum: 1000
    Offset:
      name: offset
      in: query
      description: Number of results to skip for pagination
      schema:
        type: integer
        default: 0
        minimum: 0
  schemas:
    PaginatedResponse:
      type: object
      properties:
        count:
          type: integer
          description: Total number of results
        next:
          type: string
          format: uri
          nullable: true
          description: URL to next page of results
        previous:
          type: string
          format: uri
          nullable: true
          description: URL to previous page of results
        results:
          type: array
          items: {}
    InterviewListItem:
      type: object
      description: >-
        Lightweight interview representation used in list responses (omits the
        transcript).
      properties:
        id:
          type: string
          format: uuid
          readOnly: true
        name:
          type: string
          nullable: true
        created_by:
          type: string
          format: uuid
          readOnly: true
        created_by_email:
          type: string
          format: email
          nullable: true
          readOnly: true
        type:
          type: string
        assigned_to:
          type: string
          format: uuid
          nullable: true
          readOnly: true
        assigned_by:
          type: string
          format: uuid
          nullable: true
          readOnly: true
        assigned_to_email:
          type: string
          format: email
          nullable: true
          readOnly: true
        assigned_by_email:
          type: string
          format: email
          nullable: true
          readOnly: true
        is_pending_invite:
          type: boolean
          readOnly: true
        import_info:
          allOf:
            - $ref: '#/components/schemas/ImportedInterviewInfo'
          nullable: true
          readOnly: true
        status:
          type: string
          nullable: true
          readOnly: true
          enum:
            - pending
            - in_progress
            - completed
          description: Null for imported interviews until their transcript parse completes.
        write_scope:
          type: string
          enum:
            - local
            - global
        campaign:
          allOf:
            - $ref: '#/components/schemas/InterviewCampaignRef'
          nullable: true
          readOnly: true
          description: Campaign this interview belongs to; null for ad hoc interviews.
        first_message_preview:
          type: string
          description: Truncated preview of the first user message in the transcript.
        message_count:
          type: integer
          description: Number of conversational messages in the transcript.
        created_at:
          type: string
          format: date-time
          readOnly: true
        updated_at:
          type: string
          format: date-time
          readOnly: true
    ImportedInterviewInfo:
      type: object
      description: >
        Parse-pipeline state of an imported external transcript (interviews of
        type

        "imported-interview"). Null on every other interview type. The raw
        submitted

        transcript is never returned — the parsed `chat_history` is the
        transcript.
      properties:
        import_status:
          type: string
          enum:
            - parsing
            - ready
            - failed
          description: >
            "parsing" while the async parse runs (transcript not yet readable),

            "ready" once chat_history holds the speaker-labeled turns (status
            becomes

            "completed"), "failed" when parsing errored.
        participants:
          type: array
          description: >-
            Participant names (importer-supplied or inferred from the
            transcript).
          items:
            type: string
        interview_date:
          type: string
          format: date
          nullable: true
          description: Date the conversation happened (importer-supplied or inferred).
        error:
          type: string
          nullable: true
          description: Failure detail when import_status is "failed".
    InterviewCampaignRef:
      type: object
      description: Nested campaign reference carried by interviews.
      properties:
        id:
          type: string
          format: uuid
        name:
          type: string
    Error:
      type: object
      properties:
        error:
          type: string
          description: Error message
      example:
        error: User not found
  responses:
    Unauthorized:
      description: Unauthorized - missing or invalid authentication
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: Authentication credentials were not provided.
    Forbidden:
      description: Forbidden - insufficient permissions
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: You do not have permission to perform this action.
    NotFound:
      description: Not found - resource does not exist
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            error: Not found.
  securitySchemes:
    BearerAuth:
      type: http
      scheme: bearer
      description: 'Use Authorization: Bearer <token>'
    TokenAuth:
      type: apiKey
      in: header
      name: Authorization
      description: 'Use Authorization: Token <token>'

````