Skip to main content
Triggers the ingestion pipeline for a document that has already been uploaded to object storage. The document is split into chunks, embedded, and indexed for retrieval.
Upload the file to S3 first using Get upload URL before calling this endpoint.

Request body

key
string
required
The object storage key that identifies the uploaded file. This is the key returned as part of the presigned upload flow.
filename
string
required
The original filename of the document (e.g. report.pdf).
session_id
string
required
The session to associate the ingested document with.
tags
object
required
Arbitrary key-value metadata to attach to the document chunks. Pass an empty object {} if no tags are needed.

Response

201 Created

data
string
The ID of the ingest log record created for this document. Use this to track the document’s ingestion status.

500 Internal Server Error

error
string
Always "Internal Server Error".
code
string
Machine-readable error code for debugging.

Example

curl -X POST http://localhost:3000/api/v1/ingest/process \
  -H "Authorization: Bearer <token>" \
  -H "Content-Type: application/json" \
  -d '{
    "key": "uploads/2026/report.pdf",
    "filename": "report.pdf",
    "session_id": "sess_abc123",
    "tags": { "department": "finance", "year": "2026" }
  }'
Response
{
  "data": "ingest-log-id-abc123"
}

Build docs developers (and LLMs) love