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

# Get interview report

> Fetch the scored report and transcript for an interview.



## OpenAPI

````yaml GET /interviews/{meetingId}/report
openapi: 3.1.0
info:
  title: Tracy Interview API
  description: >-
    Programmatically schedule AI-powered candidate interviews. Authenticate with
    an API key, list the jobs you can hire for, and create an interview by
    supplying the candidate's contact details, a CV link, and the job id.
  version: 1.0.0
  contact:
    name: Interview API support
    url: https://interview.gomu.ai
servers:
  - url: https://interview.qode.world/api/v1
    description: Production
  - url: https://interview.gomu.ai/api/v1
    description: Staging
security:
  - ApiKeyAuth: []
tags:
  - name: Interviews
    description: >-
      Create AI interviews for your candidates and list the jobs you can hire
      for.
  - name: Coding Interviews
    description: >-
      List the coding task bank and create or adjust coding interviews — either
      by picking explicit task ids or generating them randomly by topic,
      difficulty, and programming language.
  - name: System
    description: Service health.
paths:
  /interviews/{meetingId}/report:
    get:
      tags:
        - Interviews
      summary: Get interview report and transcript
      description: >-
        Returns the meeting metadata along with its scored report and transcript
        payload.


        `transcript` is `null` until the candidate finishes the interview and
        the report job completes — poll this endpoint, or check `completedAt` on
        the list endpoint, before assuming a transcript is available.


        Obtain `meetingId` from `GET /interviews`.
      parameters:
        - name: meetingId
          in: path
          description: >-
            Meeting identifier (UUID) returned by `GET /interviews` in
            `results[].meetingId`.
          required: true
          schema:
            type: string
            format: uuid
      responses:
        '200':
          description: Interview report and transcript.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/InterviewReportResponse'
              example:
                success: true
                data:
                  meetingId: 357d48ac-6ebc-4e3d-b46a-32a24c713bd3
                  useCaseId: d8b0d895-4e04-445f-aea9-8dd3500f018a
                  candidateId: cmookvkba00098tcgmxvs2mup
                  candidateName: Le Phuoc Thanh
                  candidateEmail: thanh.le+dev@qode.world
                  startDateTime: '2026-05-18T09:00:00.000Z'
                  endDateTime: '2026-05-18T09:34:12.000Z'
                  completedAt: '2026-05-18T09:34:12.000Z'
                  meetingDuration: 2052
                  transcript:
                    id: trn_01HX9G…
                    meetingId: 357d48ac-6ebc-4e3d-b46a-32a24c713bd3
                    rawText: 'Interviewer: Tell me about yourself…'
                    overallScore: 78
                    skillScore:
                      communication: 82
                      problem_solving: 76
                      technical_depth: 74
                    feedbackSummary:
                      wentWell: >-
                        Clear structured answers; strong system-design
                        intuition.
                      couldBeBetter: Light on concrete metrics and quantified impact.
                      needFeedback: Probe deeper on past production incidents.
                    currentSalary: $95,000
                    expectedSalary: $120,000
                    noticePeriod: 30 days
                    motivationToLeave: Looking for more ownership and scope.
                    hiringDecision: PROCEED
                    isCheatingResultDetected: false
                    questionSummary:
                      - question: Walk me through a system you designed end-to-end.
                        answer: >-
                          Designed an event-driven ingestion pipeline on Kafka +
                          ClickHouse…
                        timestamp: '00:04:12'
                      - question: How do you debug a memory leak in production?
                        answer: >-
                          Start with heap snapshots, diff between two stable
                          points…
                        timestamp: '00:18:47'
                    createdAt: '2026-05-18T09:36:00.000Z'
                    updatedAt: '2026-05-18T09:36:00.000Z'
        '401':
          $ref: '#/components/responses/Unauthorized'
        '404':
          description: No meeting found for the supplied `meetingId`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
              example:
                status: 404
                errors: >-
                  Meeting not found:
                  meetingId=357d48ac-6ebc-4e3d-b46a-32a24c713bd3
        '500':
          $ref: '#/components/responses/ServerError'
      security:
        - ApiKeyAuth: []
components:
  schemas:
    InterviewReportResponse:
      type: object
      properties:
        success:
          type: boolean
          example: true
        data:
          type: object
          properties:
            meetingId:
              type: string
              format: uuid
            useCaseId:
              type: string
              nullable: true
              description: Echoes the `qodeJobId` this interview belongs to.
            candidateId:
              type: string
              nullable: true
            candidateName:
              type: string
              nullable: true
            candidateEmail:
              type: string
              format: email
              nullable: true
            startDateTime:
              type: string
              format: date-time
              nullable: true
            endDateTime:
              type: string
              format: date-time
              nullable: true
            completedAt:
              type: string
              format: date-time
              nullable: true
            meetingDuration:
              type: number
              nullable: true
              description: Duration of the meeting in seconds. May be fractional.
            transcript:
              nullable: true
              allOf:
                - $ref: '#/components/schemas/InterviewTranscript'
              description: >-
                `null` while the meeting is still in progress or before the
                report job has run.
    Error:
      type: object
      properties:
        status:
          type: integer
          example: 401
        errors:
          oneOf:
            - type: string
            - type: array
              items:
                type: object
          description: Either a human-readable string or a list of Zod validation issues.
    InterviewTranscript:
      type: object
      description: >-
        Scored report and transcript for a single meeting. Several fields
        (`report`, `chapters`, `questionSummaryV2`, `unfairnessDetection`,
        `interviewScoreComponents`, `languageProficiency`, `roleProficiency`,
        `keyInsights`, `cognitiveFunctions`) are opaque passthrough payloads —
        treat their shape as evolving and read them defensively.
      properties:
        id:
          type: string
        attachmentId:
          type: string
          nullable: true
        meetingId:
          type: string
          format: uuid
          nullable: true
        rawText:
          type: string
          nullable: true
          description: >-
            Plain-text transcript with `Interviewer:` / `Candidate:` speaker
            labels.
        overallScore:
          type: number
          nullable: true
          description: Aggregate score (0–100).
        skillScore:
          type: object
          nullable: true
          additionalProperties:
            type: number
          description: Per-skill score map keyed by skill identifier.
        feedbackSummary:
          nullable: true
          allOf:
            - $ref: '#/components/schemas/InterviewReportFeedbackSummary'
        currentSalary:
          type: string
          nullable: true
        expectedSalary:
          type: string
          nullable: true
        noticePeriod:
          type: string
          nullable: true
        motivationToLeave:
          type: string
          nullable: true
        hiringDecision:
          type: string
          nullable: true
          description: >-
            Recommendation label (e.g. `PASS`, `PROCEED`, `HOLD`, `REJECT`).
            Exact set depends on the interview template.
        isCheatingResultDetected:
          type: boolean
          nullable: true
        questionSummary:
          type: array
          nullable: true
          items:
            $ref: '#/components/schemas/InterviewReportQuestionSummary'
        updatedBy:
          type: string
          nullable: true
        questionSummaryVersion:
          type: string
          nullable: true
        createdAt:
          type: string
          format: date-time
          nullable: true
        updatedAt:
          type: string
          format: date-time
          nullable: true
        report:
          type: object
          nullable: true
          additionalProperties: true
        chapters:
          type: array
          nullable: true
          items:
            type: object
            additionalProperties: true
        questionSummaryV2:
          type: object
          nullable: true
          additionalProperties: true
        unfairnessDetection:
          type: object
          nullable: true
          additionalProperties: true
        interviewScoreComponents:
          type: object
          nullable: true
          additionalProperties: true
        languageProficiency:
          type: object
          nullable: true
          additionalProperties: true
        roleProficiency:
          type: array
          nullable: true
          items:
            type: object
            additionalProperties: true
        keyInsights:
          type: array
          nullable: true
          items:
            type: string
        cognitiveFunctions:
          type: array
          nullable: true
          items:
            type: object
            additionalProperties: true
    InterviewReportFeedbackSummary:
      type: object
      properties:
        wentWell:
          type: string
        couldBeBetter:
          type: string
        needFeedback:
          type: string
    InterviewReportQuestionSummary:
      type: object
      properties:
        question:
          type: string
        answer:
          type: string
        timestamp:
          type: string
          description: >-
            Offset into the recording where the question was asked, formatted as
            `HH:MM:SS`.
  responses:
    Unauthorized:
      description: API key missing, malformed, expired, or revoked.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
          example:
            status: 401
            errors: Invalid API key
    ServerError:
      description: Unexpected server-side failure. Safe to retry with exponential backoff.
      content:
        application/json:
          schema:
            $ref: '#/components/schemas/Error'
  securitySchemes:
    ApiKeyAuth:
      type: http
      scheme: bearer
      bearerFormat: Opaque token (starts with `qint_`)
      description: >-
        Provide the API key issued to you by your organization admin. Send it as
        `Authorization: Bearer <api-key>` on every request.

````