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

# Get Interview

> Returns a single interview, ensuring it belongs to the API key's company.

Retrieves a specific interview by ID, including full details, transcript, analysis, and call attempt information.

## Overview

The get interview endpoint returns comprehensive information about a single interview, including its current status, transcript, AI analysis (when available), and all associated metadata. This is the primary endpoint for accessing interview results and candidate evaluation data.

## Use Cases

* **Retrieve Interview Results**: Get analysis and transcript after interview completion
* **Check Interview Status**: Monitor interview progress in real-time
* **Access Transcripts**: Retrieve full conversation transcripts
* **Review Analysis**: Access AI-generated candidate evaluation and scores

## Response Data

The response includes:

* **Interview Details**: Status, timestamps, duration, scheduled time
* **Transcript**: Full conversation transcript (when available)
* **Analysis**: AI-generated evaluation with scores and recommendations
* **Call Attempts**: Information about call attempts and recordings
* **Candidate & Agent Info**: Associated candidate and agent IDs

## Analysis Data

When an interview is completed, the response includes comprehensive analysis. The analysis structure contains a `general` object with overall assessment and an optional `specific` object for interview-type-specific data:

```json theme={null}
{
  "analysis": {
    "id": "550e8400-e29b-41d4-a716-446655440000",
    "general": {
      "overallRating": 85,
      "companyFitRating": "HIGH",
      "education": "MASTER_LEVEL",
      "experience": "THREE_TO_5_YEARS",
      "strongPoints": ["Strong technical skills", "Clear communication"],
      "weakPoints": ["Limited leadership experience"],
      "evaluation": ["Strong hire for senior individual contributor role"],
      "status": 3,
      "createdAt": "2024-01-20T14:30:00Z",
      "updatedAt": "2024-01-20T14:30:00Z"
    },
    "specific": null
  }
}
```

The `specific` field contains interview-type-specific data when available. See the [Interviews Resource Guide](/guides/resources/interviews#interview-types--analysis) for details on each interview type.

<Info>
  Analysis data is only available after the interview is completed. For
  interviews in progress or scheduled, the `analysis` field will be `null`.
</Info>

## Status Checking

```javascript theme={null}
async function checkInterviewStatus(interviewId) {
  const response = await fetch(
    `https://api.instaview.sk/interviews/${interviewId}`,
    { headers: { Authorization: `Bearer ${apiKey}` } }
  );

  const { data } = await response.json();

  return {
    status: data.status,
    hasAnalysis: data.analysis !== null,
    durationMinutes: data.durationMinutes,
    finishedDate: data.finishedDate,
  };
}
```

## Company Isolation

The API ensures that you can only access interviews that belong to candidates in your company. Attempting to access an interview from another company will result in a `403 Forbidden` error.

## Error Scenarios

* **404 Not Found**: Interview doesn't exist or has been deleted
* **403 Forbidden**: Interview belongs to a different company

## Related Resources

<CardGroup cols={2}>
  <Card title="Interviews Resource Guide" icon="microphone" href="/guides/resources/interviews">
    Learn about interview management and analysis structure
  </Card>

  <Card title="List Interviews" icon="list" href="/api-reference/interviews/list-interviews">
    List all interviews for a candidate
  </Card>

  <Card title="Create Interview" icon="plus" href="/api-reference/interviews/create-interview">
    Schedule new interviews
  </Card>

  <Card title="Get Analysis PDF" icon="file-pdf" href="/api-reference/interviews/get-interview-analysis-pdf">
    Download the analysis PDF report
  </Card>
</CardGroup>


## OpenAPI

````yaml GET /interviews/{id}
openapi: 3.0.0
info:
  title: InstaView API
  description: |-
    InstaView API Documentation

    ## Authentication

    All endpoints require API key authentication using Bearer token:
    ```
    Authorization: Bearer sk_your_api_key_here
    ```

    ## API Key Management

    The API Key module provides comprehensive key management for:
    - **Direct Client Keys**: Company-scoped keys for your applications
    - **ATS Partner Keys**: Resource-scoped keys for ATS integrations

    ### Key Features
    - HMAC-SHA256 hashing for API key storage
    - Configurable rate limiting
    - Comprehensive audit logging
    - Company-level isolation
    - Resource scoping for ATS partners
  version: 1.0.0
  contact: {}
servers:
  - url: https://api.instaview.sk
    description: Production API Gateway
security: []
tags: []
paths:
  /interviews/{id}:
    get:
      tags:
        - Interviews
      summary: Get interview by ID
      description: >-
        Returns a single interview, ensuring it belongs to the API key's
        company.
      operationId: PublicInterviewsController_getInterviewById_v1
      parameters:
        - name: id
          required: true
          in: path
          schema:
            type: string
            format: uuid
        - name: companyId
          required: false
          in: query
          description: >-
            Required for ATS API keys to specify which company to access.
            Ignored for standard company API keys.
          schema:
            type: string
      responses:
        '200':
          description: ''
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/PublicInterviewDto'
      security:
        - bearer: []
components:
  schemas:
    PublicInterviewDto:
      type: object
      properties:
        id:
          type: string
          format: uuid
          description: Interview ID
          example: 123e4567-e89b-12d3-a456-426614174000
        candidateId:
          type: string
          format: uuid
          description: Candidate ID
          example: 987e6543-e21b-12d3-a456-426614174000
        agentId:
          type: string
          description: Agent ID
          format: uuid
          example: 456e7890-e12b-34d5-a678-901234567890
        jobId:
          type: string
          description: Job ID associated with this interview, if any
          format: uuid
          nullable: true
          example: 123e4567-e89b-12d3-a456-426614174000
        status:
          type: string
          description: Interview status
          enum:
            - UNDEFINED
            - SCHEDULED
            - CANCELLED
            - FAILED
            - COMPLETED
            - IN_PROGRESS
          example: SCHEDULED
        scheduledAt:
          type: string
          format: date-time
          description: Scheduled time
          example: '2025-11-20T10:00:00Z'
        durationMinutes:
          type: number
          description: Interview duration in minutes
          example: 15
        finishedDate:
          type: string
          format: date-time
          description: Finished date
          example: '2025-11-20T10:15:00Z'
        metadata:
          type: object
          description: Custom metadata
          example:
            externalInterviewId: INT-789
        callAttempts:
          description: >-
            Call attempt logs for this interview. Present for phone interviews,
            typically empty or undefined for online interviews.
          type: array
          items:
            $ref: '#/components/schemas/PublicCallAttemptDto'
        analysis:
          description: >-
            Candidate analysis data. Present only if analysis has been
            generated.
          allOf:
            - $ref: '#/components/schemas/PublicCandidateAnalysisDto'
        createdAt:
          type: string
          description: Created timestamp
          example: '2024-11-16T10:30:00Z'
        updatedAt:
          type: string
          description: Updated timestamp
          example: '2024-11-16T10:30:00Z'
        isTest:
          type: boolean
          description: >-
            Whether this is a test interview. Test interviews are created with
            isTest=true, immediately complete without consuming billing minutes,
            and are excluded from billing/usage summaries. Use test interviews
            for testing webhook handlers and integration flows.
          example: false
      required:
        - id
        - candidateId
        - agentId
        - status
        - scheduledAt
        - createdAt
        - updatedAt
    PublicCallAttemptDto:
      type: object
      properties:
        id:
          type: string
          description: Call attempt ID
          example: c9c9a6e8-fb4a-45f3-80fc-bf94f071cd2a
        direction:
          type: string
          description: Interview direction (inbound / outbound)
          enum:
            - UNDEFINED
            - INBOUND
            - OUTBOUND
          example: OUTBOUND
        status:
          type: string
          description: Current status of the call attempt
          enum:
            - UNDEFINED
            - SCHEDULED
            - IN_PROGRESS
            - COMPLETED
            - NO_ANSWER
            - BUSY
            - FAILED
            - CANCELLED
            - VOICEMAIL
            - REJECTED
            - NO_CONSENT
            - TIMEOUT
            - MAX_ATTEMPTS_REACHED
            - HUMAN_CONTACT_REQUESTED
            - OTHER_ROLE_INTEREST
            - POLITE_DECLINE
            - TIMING_ISSUE
          example: COMPLETED
        reasonCode:
          type: string
          description: Machine-readable reason code for failures or special outcomes
          example: NO_ANSWER
        notes:
          type: string
          description: Human-readable notes associated with this call attempt
          example: Candidate did not pick up, mailbox full
        retryNumber:
          type: number
          description: >-
            Retry number for this attempt (starting from 0 or 1 depending on
            implementation)
          example: 2
        recordingUrl:
          type: string
          description: URL to the call recording, if available
          example: https://audio.example.com/recording.mp3
        duration:
          type: number
          description: Duration of the call attempt in seconds
          example: 180
        scheduledAt:
          type: string
          format: date-time
          description: Scheduled time for this call attempt (ISO 8601, UTC)
          example: '2025-07-22T10:00:00Z'
        calledAt:
          type: string
          format: date-time
          description: Actual time when the call started (ISO 8601, UTC)
          example: '2025-07-22T10:01:00Z'
        transcript:
          description: >-
            Transcript segments for this call attempt, ordered chronologically.
            Each segment contains the speaker, text content, and timing. Omitted
            when the interview has no transcript or the call attempt did not
            produce one.
          type: array
          items:
            $ref: '#/components/schemas/PublicTranscriptSegmentDto'
      required:
        - id
        - direction
    PublicCandidateAnalysisDto:
      type: object
      properties:
        id:
          type: string
          description: Analysis ID
          example: 123e4567-e89b-12d3-a456-426614174000
        general:
          description: General analysis data
          allOf:
            - $ref: '#/components/schemas/PublicGeneralAnalysisDto'
        specific:
          type: object
          description: >-
            Specific analysis data based on interview type (e.g., language test
            scores, outreach feedback)
          example:
            pronunciationScores:
              accuracy: 90
              fluency: 85
              prosody: 82
            grammar:
              level: C1
      required:
        - id
        - general
    PublicTranscriptSegmentDto:
      type: object
      description: >-
        A single segment of a call attempt transcript, representing one
        utterance by either the AI interviewer or the candidate.
      properties:
        speaker:
          type: string
          description: Who spoke this segment
          enum:
            - AI
            - HUMAN
          example: AI
        text:
          type: string
          description: Transcribed text of the utterance
          example: Hello, thank you for taking the time to speak with me today.
        startTime:
          type: number
          description: Start time of the segment in seconds from the start of the recording
          example: 0
          minimum: 0
        endTime:
          type: number
          description: End time of the segment in seconds from the start of the recording
          example: 3.5
          minimum: 0
        language:
          type: string
          description: BCP-47 language code detected for this segment (e.g. 'en', 'sk')
          example: en
          pattern: ^[A-Za-z]{2,3}(-[A-Za-z0-9]{2,8})*$
      required:
        - speaker
        - text
        - startTime
        - endTime
    PublicGeneralAnalysisDto:
      type: object
      properties:
        overallRating:
          type: number
          description: Overall rating (0-100)
          example: 85
        companyFitRating:
          type: string
          description: Company fit rating
          enum:
            - UNDEFINED
            - LOW
            - MEDIUM
            - HIGH
          example: HIGH
        education:
          type: string
          description: Summary of education analysis
          example: Master's degree in Computer Science
        experience:
          type: string
          description: Summary of experience analysis
          example: 5 years of experience in software development
        strongPoints:
          description: Candidate's strong points and advantages
          example:
            - Excellent communication skills
            - Strong technical expertise in React and Node.js
            - Proven track record of leading teams
          type: array
          items:
            type: string
        weakPoints:
          description: Candidate's weak points or areas for improvement
          example:
            - Limited experience with microservices
            - Needs improvement in system design
          type: array
          items:
            type: string
        evaluation:
          description: Overall evaluation summary and recommendations
          example:
            - Strong candidate with relevant experience
            - Good cultural fit for the team
            - Recommended for next round
          type: array
          items:
            type: string
        status:
          type: number
          description: Analysis processing status
          enum:
            - 1
            - 2
            - 3
            - 4
          example: 3
        createdAt:
          type: string
          description: Created timestamp (UTC)
          example: '2024-11-16T10:30:00Z'
          format: date-time
        updatedAt:
          type: string
          description: Updated timestamp (UTC)
          example: '2024-11-16T10:30:00Z'
          format: date-time
      required:
        - createdAt
        - updatedAt
  securitySchemes:
    bearer:
      type: http
      scheme: bearer
      description: API key for authentication using Bearer scheme

````