---
title: "Upload Document"
method: POST
path: "/api/v1/documents/uploads"
tags: ["Document"]
---

# Upload Document

`POST /api/v1/documents/uploads`

## Request

- Base URL: `https://api.gemina.co` (the document declares no server; this is the origin it was published from)
- URL: `https://api.gemina.co/api/v1/documents/uploads`
- Auth: API key in header `X-API-Key`

Upload a document file (image or PDF) for processing

Accepts:
- Image files: PNG, JPEG, JPG, GIF, WEBP, HEIC/HEIF, AVIF
- PDF files: PDF

Returns document ID and storage location for further processing

## Response `200`

Successful Response

- DocumentProcessingResultOutDTO
  - `servedAt` string, date-time
  - `servedAtTimestamp` number
  - `createdAt` string, date-time, nullable
  - `createdAtTimestamp` number, nullable
  - `status` 'pending' | 'in_process' | 'failed' | 'success' | 'partial' | 'empty', required
  - `meta` DocumentProcessingMetaOutDTO, required
    - `externalId` string, nullable
    - `documentId` string, uuid, nullable
    - `userId` string, uuid, nullable
    - `endUserId` string, nullable
    - `apiKeyId` string, uuid, nullable
    - `filename` string, nullable
    - `fileSize` integer, nullable
    - `contentType` string, nullable
    - `documentFileType` 'pdf' | 'image' | 'other'
    - `numberOfPages` integer, nullable
    - `normalizedWidth` integer, nullable
    - `normalizedHeight` integer, nullable
    - `normalizedMegapixels` number, nullable
    - `storageLocation` 'israel' | 'europe' | 'united_states' | 'asia'
    - `imageUrl` string, uri, nullable
    - `thumbnailUrl` string, uri, nullable
    - `originalDocumentUrl` string, uri, nullable
    - `correlationId` string, uuid, nullable
    - `next` string, uri, nullable
  - `data` DocumentDataOutDTO, required
    - `extractions` ExtractionProcessingResultOutDTO[], nullable
      - `status` 'pending' | 'in_process' | 'failed' | 'success' | 'partial' | 'empty', required
      - `meta` ExtractionMetaOutDTO, required
        - `extractionId` string, uuid, nullable
        - `modelType` 'gemina' | 'google' | 'openai' | 'velox' | 'praetorian' | 'invictus', required
        - `thinking` boolean, required
        - `correction` boolean, required
        - `evaluation` boolean, required
        - `includeCoordinates` boolean, required
        - `processorClass` string, required
        - `extractionType` 'ocr' | 'document_details_hebrew' | 'document_line_items_hebrew' | 'invoice_headers' | 'invoice_line_items' | 'custom_template' | 'filetag', required: Defines the type of operation to perform on the uploaded document
        - `latencySeconds` number, nullable
        - `numberOfFields` integer, nullable
        - `purgeAt` string, date-time, nullable, required
        - `purgedAt` string, date-time, nullable, required
        - `purgeReason` 'user_deleted' | 'retention_expired' | 'admin_action', required
        - `validationFeedback` ValidationSchemaModel
          - `validationSchema` string[], required
          - `validationFields` ValidationFieldModel[]
            - `key` string, required
            - `label` string, required
            - `type` 'string' | 'number' | 'integer' | 'boolean' | 'date', required
            - `enum` string[], nullable
            - `format` string, nullable
            - `description` string, nullable
          - `rowMutableTables` RowMutableTableModel[]
            - `pointer` string, required
            - `keyTemplate` string, required
            - `columns` ValidationColumnModel[]
              - …
        - `validated` boolean
      - `values` object, nullable, required
      - `verifiedValues` object, nullable
      - `verifiedDiff` VerifiedDiffEntryOutDTO[], nullable
        - `field` string, required
        - `status` 'corrected' | 'added' | 'removed', required
        - `pointer` string, nullable
        - `original` union
          - string
          - integer
          - number
          - boolean
          - unknown[]
            - unknown
          - object
        - `verified` union
          - string
          - integer
          - number
          - boolean
          - unknown[]
            - unknown
          - object
      - `errors` object[]
  - `errors` object[]

## Other responses

- `202`: Accepted — processing continues; poll the results endpoint.
- `422`: Validation Error

---

[API](https://skmtc.dev/gemina/apis/gemina-api.md) · [All operations](https://skmtc.dev/gemina/apis/gemina-api/llms.txt) · [OpenAPI document](https://skmtc.dev/gemina/apis/gemina-api/revisions/152fd3f6f6ec?raw)
