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

# Generate an interview report

> Generates an interview result report as a PDF (returns a signed URL), raw HTML, or structured JSON. Provide either `interview_result_id` for a single result or `interview_result_ids` for a combined multi-result report.



## OpenAPI

````yaml https://cool.jobmojito.com/functions/v1/openapi post /job-interview-pdf
openapi: 3.1.0
info:
  title: JobMojito API
  version: 1.0.0
  description: >-
    Public API for JobMojito, served by Supabase Edge Functions. Authenticate
    with a Supabase JWT access token via the Authorization header.
servers:
  - url: https://cool.jobmojito.com/functions/v1
    description: Production
security: []
tags:
  - name: Interviews
    description: >-
      Create, configure and manage interview / coaching / assessment
      definitions.
  - name: Results
    description: >-
      Interview results, transcripts, reports, re-attempt requests and
      analytics.
  - name: Candidates
    description: List and manage candidates.
  - name: Knowledge base
    description: Upload documents used to generate knowledge-base interviews.
  - name: Resume & Form verification
    description: Pre-screen candidates from resumes and forms.
  - name: Admin
    description: >-
      Account administration — invite team/coaching users, manage sub-merchants
      and avatar templates.
paths:
  /job-interview-pdf:
    post:
      tags:
        - Results
      summary: Generate an interview report
      description: >-
        Generates an interview result report as a PDF (returns a signed URL),
        raw HTML, or structured JSON. Provide either `interview_result_id` for a
        single result or `interview_result_ids` for a combined multi-result
        report.
      requestBody:
        required: true
        content:
          application/json:
            schema:
              $ref: '#/components/schemas/JobInterviewPdfRequest'
      responses:
        '200':
          description: >-
            The generated report. The body is one of three shapes, selected by
            the request `export_type`: `pdf` → `{ pdf_export_url,
            pdf_export_valid_until }`; `html` → `{ html_export }`; `json` → `{
            json_export }`.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/JobInterviewPdfResponse'
        '401':
          description: Missing, expired or invalid access token.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '422':
          description: Validation error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
        '500':
          description: Server error.
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/Error'
      security:
        - bearerAuth: []
components:
  schemas:
    JobInterviewPdfRequest:
      type: object
      properties:
        interview_result_id:
          type: string
          format: uuid
          example: 93c98d21-e04d-4a84-9afa-ed154cf73636
        interview_result_ids:
          type: array
          items:
            type: string
            format: uuid
          description: Generate a single combined report for multiple results.
        export_type:
          type: string
          enum:
            - pdf
            - html
            - json
        export_features_result:
          $ref: '#/components/schemas/InterviewPdfExportFeatures'
        store_file:
          type: boolean
          description: >-
            When true (pdf only), persist the file to storage and return a
            signed URL.
      required:
        - export_type
    JobInterviewPdfResponse:
      anyOf:
        - $ref: '#/components/schemas/JobInterviewPdfPdfExport'
        - $ref: '#/components/schemas/JobInterviewPdfHtmlExport'
        - $ref: '#/components/schemas/JobInterviewPdfJsonExport'
      description: >-
        The generated report. Exactly one of the three shapes below is returned,
        selected by the request `export_type`: `pdf` → `{ pdf_export_url,
        pdf_export_valid_until }`; `html` → `{ html_export }`; `json` → `{
        json_export }`.
    Error:
      type: object
      properties:
        error:
          type: string
          example: Field is required.
        name:
          type: string
          example: interview_result_id
      required:
        - error
    InterviewPdfExportFeatures:
      type: object
      properties:
        mojito_language_code:
          type: string
          enum:
            - ar
            - bg
            - zh
            - hr
            - cs
            - da
            - nl
            - en
            - fil
            - fi
            - fr
            - de
            - el
            - hi
            - hu
            - id
            - it
            - ja
            - ko
            - ms
            - 'no'
            - pl
            - pt
            - br
            - ro
            - ru
            - sk
            - es
            - sv
            - ta
            - th
            - tr
            - uk
            - vi
          description: >-
            Report language. Optional: if omitted, the report uses each result's
            own language code. If provided and it differs from the result's
            language, the report content is translated, which costs 0.1 credit
            per result.
          example: en
        contact_details:
          type: boolean
          default: true
          description: >-
            Include the candidate's contact details (email, LinkedIn, phone
            number, physical address).
        ai_recruiter_assessment:
          type: boolean
          default: true
          description: >-
            Include the AI recruiter assessment: resume analysis, overall AI
            analysis, and the why-hire / why-not-hire summaries.
        ai_scoring_rubric:
          type: boolean
          default: false
          description: >-
            Include the AI scoring rubric — the candidate-expectation buckets
            (strong / moderate / weak). Only takes effect when
            ai_recruiter_assessment is also true.
        analytics:
          type: boolean
          default: true
          description: >-
            Include speech analytics for each answer (speech accuracy, fluency,
            recognition confidence, sentiment, cadence / words-per-minute).
        transcript:
          type: boolean
          default: true
          description: >-
            Include the full interview transcript: each question, the candidate
            answer, and the per-answer AI analysis.
        files:
          type: boolean
          default: true
          description: >-
            Include the candidate's uploaded files (resume and cover letter) as
            signed page URLs.
        answer_recording:
          type: boolean
          default: false
          description: >-
            Include a signed recording URL (audio/video) for each individual
            answer.
        session_recording:
          type: boolean
          default: false
          description: >-
            Include the full interview session recording and the video
            introduction as signed URLs.
        group_by_question:
          type: boolean
          default: false
          description: >-
            Group answers under their expected questions (instead of
            chronological order), including questions that were not reached.
    JobInterviewPdfPdfExport:
      type: object
      properties:
        pdf_export_url:
          type: string
          format: uri
          description: Signed URL of the generated PDF.
        pdf_export_valid_until:
          type: string
          description: ISO timestamp until which the signed URL is valid.
          example: '2026-09-01T12:00:00.000Z'
      required:
        - pdf_export_url
        - pdf_export_valid_until
      description: Returned when `export_type` is `pdf`.
      title: PDF export
    JobInterviewPdfHtmlExport:
      type: object
      properties:
        html_export:
          type: string
          description: The full report rendered as an HTML document string.
      required:
        - html_export
      description: Returned when `export_type` is `html`.
      title: HTML export
    JobInterviewPdfJsonExport:
      type: object
      properties:
        json_export:
          type: object
          properties:
            table:
              type: string
              description: Overview table HTML, present only for multi-result exports.
            results:
              type: array
              items:
                type: object
                properties:
                  data:
                    type: object
                    additionalProperties:
                      nullable: true
                  files:
                    type: array
                    items:
                      type: object
                      properties:
                        type:
                          type: string
                        page:
                          type: number
                          nullable: true
                        page_signed:
                          type: string
                          nullable: true
                      required:
                        - type
                        - page
                        - page_signed
                required:
                  - data
                  - files
          required:
            - results
      required:
        - json_export
      description: Returned when `export_type` is `json`.
      title: JSON export
  securitySchemes:
    bearerAuth:
      type: http
      scheme: bearer
      bearerFormat: JWT
      description: 'Supabase JWT access token, passed as `Authorization: Bearer <token>`.'

````