---
title: "Batch Ingest Files"
method: POST
path: "/ingest/files"
tags: ["Ingestion"]
---

# Batch Ingest Files

`POST /ingest/files`

Batch ingest **multiple files** (async).

Each file is treated the same as :func:`ingest_file` but sharing the same
request avoids many round-trips. All heavy work is still delegated to the
background worker pool.

Args:
    files: List of files to upload.
    metadata: Either a single JSON-string dict or list of dicts matching
        the number of files.
    rules: Either a single rules list or list-of-lists per file.
    use_colpali: Enable multi-vector embeddings.
    folder_name: Optional folder scoping for **all** files.
    end_user_id: Optional end-user scoping for **all** files.
    auth: Caller context with *write* permission.
    redis: arq redis connection to enqueue jobs.

Returns:
    BatchIngestResponse summarising created documents & errors.

## Headers

- `authorization` string

## Response `200`

Successful Response

- BatchIngestResponse — Response model for batch ingestion
  - `documents` Document[], required
    - `external_id` string
    - `content_type` string, required
    - `filename` string, nullable
    - `metadata` object
    - `storage_info` object
    - `storage_files` StorageFileInfo[]
      - `bucket` string, required
      - `key` string, required
      - `version` integer
      - `filename` string, nullable
      - `content_type` string, nullable
      - `timestamp` string, date-time
    - `system_metadata` object
    - `additional_metadata` object
    - `chunk_ids` string[]
    - `folder_name` string, nullable
    - `end_user_id` string, nullable
    - `app_id` string, nullable
  - `errors` object[], required

## Other responses

- `422` — Validation Error

---

[API](https://skmtc.dev/morphik-org/apis/fastapi.md) · [All operations](https://skmtc.dev/morphik-org/apis/fastapi/llms.txt) · [OpenAPI document](https://skmtc-service-production.skmtc.workers.dev/v1/apis/morphik-org/fastapi/revisions/9ae5bfba3a15/schema)
