---
title: "Ingest Files"
method: POST
path: "/v2/ingest/files"
tags: ["v2", "v2-ingest"]
---

# Ingest Files

`POST /v2/ingest/files`

## Request

- Base URL: `https://api.enconvert.com` (the document declares no server; this is the origin it was published from)
- URL: `https://api.enconvert.com/v2/ingest/files`
- Auth: none declared

Ingest uploaded FILES into RAG-ready chunks (202 + job_id).

The file counterpart of ``POST /v2/ingest``: each uploaded document (PDF,
DOCX, PPTX, XLSX, CSV, HTML, EPUB, TXT/MD, and legacy/ODF office) is converted
to Markdown, split by the SAME heading-aware chunker, and assembled into the
same single JSONL deliverable — one pipeline for both web and file RAG
ingestion. Always asynchronous: the durable ingest worker drains it, and
``GET`` / ``DELETE /v2/ingest/{job_id}`` report status and cancel it.

Files are stored to object storage at submit (so the durable resume can
re-read them) and deleted once the JSONL is assembled. Bills one op per
file against the unified ops quota, re-checked per file in the worker.

## Headers

- `X-API-Key` string, nullable
- `authorization` string, nullable

## Response `202`

Successful Response

- IngestJobResponse: Lifecycle view of one ingest job (POST 202, GET, DELETE all share it).
  - `job_id` string, required
  - `status` 'queued' | 'discovering' | 'processing' | 'completed' | 'failed' | 'canceled', required
  - `mode` 'urls' | 'sitemap' | 'crawl' | 'files', required
  - `pages_discovered` integer
  - `pages_found` integer, nullable: Unique eligible URLs discovery yielded BEFORE the max_pages cap (sitemap: true unique count; crawl: bounded by the crawl budget, so a lower bound). Absent for explicit-urls jobs and jobs created before migration 026.
  - `discovery_truncated` boolean: True when discovery found more unique URLs than max_pages allowed the job to enqueue.
  - `pages_processed` integer
  - `pages_failed` integer
  - `total_chunks` integer
  - `output_url` string, nullable: Signed URL to the final JSONL; present once completed.
  - `error_message` string, nullable
  - `webhook_url` string, nullable: Completion-webhook target registered for this job, if any.
  - `webhook_delivered` boolean: True once the signed completion webhook got a 2xx (H.8).
  - `created_at` string, date-time, nullable
  - `completed_at` string, date-time, nullable
  - `warnings` string[]

## Other responses

- `422`: Validation Error

---

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