> ## 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.

# Add Review Documents

> Add documents to an existing review — in one call.

Use this to RESPOND to a review's findings. Upload the filled Flightline
working doc and its marked decisions are applied automatically (cleared,
disputed, …); upload supporting evidence and it is attached and the review is
re-assessed. The body is JUST documents (``multipart/form-data`` or JSON
signed source URLs) — exactly like creating a review. The working doc itself
carries the dispositions; there is nothing else to send.



## OpenAPI

````yaml /api-reference/openapi.json post /reviews/{review_id}/documents
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}/documents:
    post:
      tags:
        - reviews
      summary: Add Review Documents
      description: >-
        Add documents to an existing review — in one call.


        Use this to RESPOND to a review's findings. Upload the filled Flightline

        working doc and its marked decisions are applied automatically (cleared,

        disputed, …); upload supporting evidence and it is attached and the
        review is

        re-assessed. The body is JUST documents (``multipart/form-data`` or JSON

        signed source URLs) — exactly like creating a review. The working doc
        itself

        carries the dispositions; there is nothing else to send.
      operationId: add_review_documents_reviews__review_id__documents_post
      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/ReviewDocumentsAccepted'
          description: Successful Response
        '400':
          content:
            application/json:
              example:
                error:
                  code: document_required
                  message: At least one document is required.
              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: No documents supplied.
        '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: review_not_found
                  message: Review not found.
              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 owned by your organization.
        '422':
          content:
            application/json:
              example:
                error:
                  code: working_doc_flattened
                  message: >-
                    This is a Flightline working doc, but its fillable fields
                    are gone (flattened, printed, or scanned). Re-upload the
                    original un-flattened PDF.
              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: A flattened/scanned working doc, or an invalid request body.
        '429':
          content:
            application/json:
              example:
                error:
                  code: rate_limited
                  message: Rate limit exceeded. Retry with exponential backoff.
              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: Rate limit exceeded.
components:
  schemas:
    ReviewDocumentsAccepted:
      additionalProperties: false
      description: >-
        The ``POST /reviews/{id}/documents`` response.


        Reports how the uploaded documents were handled: how many were ingested
        as

        new evidence (and trigger a re-assessment), and — if a Flightline
        working

        doc was among them — the per-finding outcome of applying its marked

        dispositions.
      example:
        dispositions:
          - decision: cleared
            detail: recorded self_clear (attempt 1)
            finding: CLO-001
            outcome: applied
          - decision: disputed
            detail: recorded justification (attempt 1)
            finding: CMP-010
            outcome: applied
          - decision: cure_attached
            detail: cure_attached needs the curing document linked to this finding
            finding: AST-014
            outcome: skipped
        dispositions_applied: 2
        dispositions_failed: 0
        dispositions_skipped: 1
        documents_ingested: 1
        review_id: 9b2c1f3a-4d5e-6789-abcd-ef0123456789
        status: processing
      properties:
        dispositions:
          default: []
          items:
            $ref: '#/components/schemas/DispositionResult'
          title: Dispositions
          type: array
        dispositions_applied:
          default: 0
          title: Dispositions Applied
          type: integer
        dispositions_failed:
          default: 0
          title: Dispositions Failed
          type: integer
        dispositions_skipped:
          default: 0
          title: Dispositions Skipped
          type: integer
        documents_ingested:
          default: 0
          description: New evidence documents added (excludes the working doc itself).
          title: Documents Ingested
          type: integer
        review_id:
          format: uuid
          title: Review Id
          type: string
        status:
          $ref: '#/components/schemas/PublicReviewStatus'
      required:
        - review_id
        - status
      title: ReviewDocumentsAccepted
      type: object
    DispositionResult:
      additionalProperties: false
      description: >-
        What happened to one finding's marked decision in an uploaded working
        doc.
      properties:
        decision:
          anyOf:
            - type: string
            - type: 'null'
          description: >-
            The marked decision: cleared | disputed | cure_attached |
            agree_cannot_cure.
          title: Decision
        detail:
          description: Human-readable explanation of the outcome.
          title: Detail
          type: string
        finding:
          description: The finding code the disposition targeted, e.g. 'CLO-001'.
          title: Finding
          type: string
        outcome:
          description: applied | skipped | failed.
          title: Outcome
          type: string
      required:
        - finding
        - outcome
        - detail
      title: DispositionResult
      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

````