---
title: "Ingest a file (multipart upload)"
method: POST
path: "/v1/tables/{table_name}/ingest/file"
tags: ["ingestion"]
---

# Ingest a file (multipart upload)

`POST /v1/tables/{table_name}/ingest/file`

Upload a document file for ingestion. Supports PDF, Word, Excel, PowerPoint, images (with OCR), audio files (with transcription), HTML, and more via MarkItDown.

The multipart body only needs the `file` field.

## Path parameters

- `table_name` string, required

## Response `200`

File ingested successfully

- IngestResponse
  - `document_id` string — Unique document ID
  - `title` string — Document title
  - `total_nodes` integer — Total number of nodes in the tree
  - `max_depth` integer — Maximum depth of the tree
  - `stats` IngestStats
    - `chars_extracted` integer — Characters extracted from source
    - `chunks_created` integer — Text chunks created
    - `nodes_created` integer — Tree nodes created
    - `summaries_generated` integer — Summaries generated by LLM
    - `total_time_ms` integer — Total processing time in milliseconds

## Other responses

- `400` — Invalid request
- `404` — Table not found
- `500` — Ingestion failed

---

[API](https://skmtc.net/brainfish-ai/apis/reasondb-api.md) · [All operations](https://skmtc.net/brainfish-ai/apis/reasondb-api/llms.txt) · [OpenAPI document](https://skmtc-service-staging.skmtc.workers.dev/v1/apis/brainfish-ai/reasondb-api/revisions/f8665c1a5239/schema)
