---
title: "Ingest documents (text, files, or mixed)"
method: POST
path: "/v1/knowledge-base/knowledge-bases/{kb_id}/ingest"
tags: ["knowledge-base"]
---

# Ingest documents (text, files, or mixed)

`POST /v1/knowledge-base/knowledge-bases/{kb_id}/ingest`

Unified document ingestion endpoint.

Accepts a multipart form with:
- `manifest` (required): JSON array describing each item
- `files` (optional): one or more file uploads, referenced by `file_index` in the manifest

Manifest format (JSON array):

```json
[
  {"type": "file", "file_index": 0, "title": "Report"},
  {"type": "text", "title": "FAQ", "content": "What is..."},
  {"type": "file", "file_index": 1, "title": "Old Report", "document_id": "uuid"}
]
```

## Path parameters

- `kb_id` string, uuid, required

## Response `202`

Successful Response

- IngestResponse — Response from the unified ingest endpoint. ``ingestion_job_id`` is the parent IngestionJob for bulk submissions, or the single-doc job for a 1-item manifest. ``items`` mirrors the manifest order so callers can render per-item outcomes without a second call.
  - `ingestion_job_id` string, uuid, required
  - `items` IngestResultItem[], required
    - `manifest_index` integer, required
    - `result` 'queued' | 'duplicate', required
    - `document_id` string, uuid, nullable
    - `duplicate_of_document_id` string, uuid, nullable
    - `duplicate_of_version_id` string, uuid, nullable
    - `duplicate_of_document_title` string, nullable

## Other responses

- `400` — Bad request
- `401` — Authentication required
- `404` — Resource not found
- `422` — Validation Error

---

[API](https://skmtc.net/oneloop-hq/apis/feather-api.md) · [All operations](https://skmtc.net/oneloop-hq/apis/feather-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/oneloop-hq/feather-api/versions/888bdd5c076e/schema)
