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

# Get Review Report

> Get the customer-released report for a completed review.

Failure contract — the status code tells an integrator what to do:
  * 200 — review ``completed``; the report body follows.
  * 422 — review ``failed`` (terminal). No report will ever exist; stop
    polling and inspect the review / resubmit. Distinct from 404 so a
    failure is never mistaken for "still processing".
  * 404 — review not found, OR not finished yet (``queued`` /
    ``processing``); keep polling. We never leak verdict-adjacent signal
    before the publication gate passes.



## OpenAPI

````yaml /api-reference/openapi.json get /reviews/{review_id}/report
openapi: 3.1.0
info:
  description: >-
    Submit loan packages for automated quality-control review and retrieve
    results. Authenticate every request with your organization's API key:
    `Authorization: Bearer <key>`.
  title: Flightline Public API
  version: '2026-05-30'
servers:
  - url: https://api.flightlinehq.com/v1
security: []
paths:
  /reviews/{review_id}/report:
    get:
      tags:
        - reviews
      summary: Get Review Report
      description: |-
        Get the customer-released report for a completed review.

        Failure contract — the status code tells an integrator what to do:
          * 200 — review ``completed``; the report body follows.
          * 422 — review ``failed`` (terminal). No report will ever exist; stop
            polling and inspect the review / resubmit. Distinct from 404 so a
            failure is never mistaken for "still processing".
          * 404 — review not found, OR not finished yet (``queued`` /
            ``processing``); keep polling. We never leak verdict-adjacent signal
            before the publication gate passes.
      operationId: get_review_report_reviews__review_id__report_get
      parameters:
        - in: path
          name: review_id
          required: true
          schema:
            format: uuid
            title: Review Id
            type: string
        - in: header
          name: authorization
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: Authorization
        - in: header
          name: X-Api-Key
          required: false
          schema:
            anyOf:
              - type: string
              - type: 'null'
            title: X-Api-Key
      responses:
        '200':
          content:
            application/json:
              schema:
                $ref: '#/components/schemas/ReviewReport'
          description: Successful Response
        '401':
          content:
            application/json:
              example:
                error:
                  code: missing_api_key
                  message: 'Missing API key. Send ''Authorization: Bearer <key>''.'
              schema:
                properties:
                  error:
                    properties:
                      code:
                        description: Stable, machine-readable error code (branch on this).
                        type: string
                      message:
                        description: >-
                          Human-readable, safe explanation (do not branch on
                          this).
                        type: string
                    required:
                      - code
                      - message
                    type: object
                required:
                  - error
                type: object
          description: Missing, invalid, or revoked API key.
        '404':
          content:
            application/json:
              example:
                error:
                  code: report_not_ready
                  message: Report is not available yet for this review.
              schema:
                properties:
                  error:
                    properties:
                      code:
                        description: Stable, machine-readable error code (branch on this).
                        type: string
                      message:
                        description: >-
                          Human-readable, safe explanation (do not branch on
                          this).
                        type: string
                    required:
                      - code
                      - message
                    type: object
                required:
                  - error
                type: object
          description: Review not found, or not finished yet (keep polling).
        '409':
          content:
            application/json:
              example:
                error:
                  code: report_not_ready
                  message: Report not available for this review.
              schema:
                properties:
                  error:
                    properties:
                      code:
                        description: Stable, machine-readable error code (branch on this).
                        type: string
                      message:
                        description: >-
                          Human-readable, safe explanation (do not branch on
                          this).
                        type: string
                    required:
                      - code
                      - message
                    type: object
                required:
                  - error
                type: object
          description: >-
            The release exists but its report render is unavailable; Flightline
            will not substitute a different one. Contact support.
        '422':
          content:
            application/json:
              example:
                error:
                  code: review_failed
                  message: >-
                    This review failed and has no report. Check the review
                    status; you may need to resubmit.
              schema:
                properties:
                  error:
                    properties:
                      code:
                        description: Stable, machine-readable error code (branch on this).
                        type: string
                      message:
                        description: >-
                          Human-readable, safe explanation (do not branch on
                          this).
                        type: string
                    required:
                      - code
                      - message
                    type: object
                required:
                  - error
                type: object
          description: Review failed (terminal); no report will exist.
components:
  schemas:
    ReviewReport:
      additionalProperties: false
      description: |-
        The customer-facing report for a completed review.

        Only available once the review is ``completed`` (i.e. the internal
        publication gate has released the case). Before that, the report
        endpoint returns 404 so verdict-adjacent signal never leaks early.
      example:
        generated_at: '2026-05-30T17:42:00Z'
        issues:
          - category: compliance
            code: APR-003
            severity: high
            summary: The disclosed APR is outside the allowed tolerance.
            title: APR tolerance exceeded
          - category: documentation
            code: DOC-011
            severity: medium
            summary: A required income document was not found in the package.
            title: Missing income documentation
        outcome: issues_found
        report_pdf_expires_at: '2026-05-30T17:47:00Z'
        report_pdf_url: https://downloads.example.com/report.pdf?signature=...
        review_id: 9b2c1f3a-4d5e-6789-abcd-ef0123456789
        sandbox: false
        status: completed
        summary:
          critical: 0
          high: 1
          info: 0
          low: 0
          medium: 1
          total: 2
      properties:
        generated_at:
          format: date-time
          title: Generated At
          type: string
        issues:
          default: []
          items:
            $ref: '#/components/schemas/ReviewIssue'
          title: Issues
          type: array
        outcome:
          anyOf:
            - type: string
            - type: 'null'
          description: Overall outcome, e.g. 'clear' or 'issues_found'.
          examples:
            - issues_found
          title: Outcome
        report_pdf_expires_at:
          anyOf:
            - format: date-time
              type: string
            - type: 'null'
          description: Expiry timestamp for report_pdf_url.
          title: Report Pdf Expires At
        report_pdf_url:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            Fresh, short-lived download URL for the current released report PDF.
            Request this report endpoint again after an amendment or after
            expiry.
          title: Report Pdf Url
        review_id:
          format: uuid
          title: Review Id
          type: string
        sandbox:
          default: false
          description: >-
            True for sandbox (test-mode) reviews: the issues below are canned
            sample data.
          title: Sandbox
          type: boolean
        status:
          $ref: '#/components/schemas/PublicReviewStatus'
        summary:
          $ref: '#/components/schemas/IssueCounts'
      required:
        - review_id
        - status
        - summary
        - generated_at
      title: ReviewReport
      type: object
    ReviewIssue:
      additionalProperties: false
      description: |-
        A single customer-facing issue in a review report.

        A minimal, purpose-built projection of a published finding. It carries
        NO evidence chains, rule-execution internals, extraction outputs, or
        internal status fields — only what a customer needs to act.
      example:
        category: compliance
        code: APR-003
        severity: high
        summary: The disclosed APR is outside the allowed tolerance.
        title: APR tolerance exceeded
      properties:
        category:
          anyOf:
            - type: string
            - type: 'null'
          description: Issue category, e.g. 'compliance' or 'documentation'.
          examples:
            - compliance
          title: Category
        code:
          description: Stable rule/issue code, e.g. 'APR-003'.
          examples:
            - APR-003
          title: Code
          type: string
        severity:
          $ref: '#/components/schemas/PublicSeverity'
        summary:
          anyOf:
            - type: string
            - type: 'null'
          description: Plain-language explanation of the issue.
          examples:
            - The disclosed APR is outside the allowed tolerance.
          title: Summary
        title:
          description: Short, human-readable issue title.
          examples:
            - APR tolerance exceeded
          title: Title
          type: string
      required:
        - code
        - severity
        - title
      title: ReviewIssue
      type: object
    PublicReviewStatus:
      description: >-
        Customer-facing review lifecycle.


        A deliberately coarse projection of the internal ``CaseStatus``.
        Internal

        states that are not meaningful to a customer (e.g. the admin-release
        gate

        ``pending_review``, the publication-blocker state) collapse to

        ``processing`` so we never surface internal workflow detail or

        verdict-adjacent signal before the publication gate passes.
      enum:
        - queued
        - awaiting_documents
        - processing
        - completed
        - failed
      title: PublicReviewStatus
      type: string
    IssueCounts:
      additionalProperties: false
      description: Roll-up of issue counts by severity.
      example:
        critical: 0
        high: 1
        info: 0
        low: 0
        medium: 1
        total: 2
      properties:
        critical:
          default: 0
          title: Critical
          type: integer
        high:
          default: 0
          title: High
          type: integer
        info:
          default: 0
          title: Info
          type: integer
        low:
          default: 0
          title: Low
          type: integer
        medium:
          default: 0
          title: Medium
          type: integer
        total:
          default: 0
          description: Total number of issues in the report.
          title: Total
          type: integer
      title: IssueCounts
      type: object
    PublicSeverity:
      description: Customer-facing issue severity.
      enum:
        - critical
        - high
        - medium
        - low
        - info
      title: PublicSeverity
      type: string

````