Skip to main content
File ingestion uses a presigned upload flow: create a document record, upload the bytes directly to object storage, then poll until background processing finishes.

Before you start

Set your API key, tenant, knowledge base, and file details:
The examples below use jq to read the JSON response.

Presigned upload flow

1

Request an upload URL

Send the destination knowledge base, tenant, filename, MIME type, and exact byte size.
The response has this shape:
2

Upload the file bytes

Put the file at upload_url with the same Content-Type used in the presign request. The storage request does not use your AutoSage bearer key.
Processing starts automatically after the upload arrives.
3

Poll until processing finishes

Treat upload_url as a short-lived secret and use it before expires_at. Upload the bytes exactly once with the intended MIME type; request a new URL if the original one expires.

Processing statuses

AutoSage supports PDFs, including scanned PDFs; plain text, Markdown, HTML, CSV, and JSON; Word, Excel, and PowerPoint files; common audio formats; and common image formats. Files can be up to 500 MB, subject to the tenant’s document-count and storage quotas.
Quota checks happen before the upload URL is issued. A tenant over its document or storage allowance receives a 403 response with a clear message.

URL ingestion and document maintenance

Wait for processed before querying the knowledge base. Remove failed or abandoned uploads you no longer need because their document records and stored bytes count toward tenant quotas.
For the complete background pipeline, see Ingestion lifecycle. For endpoint schemas, see the Documents API.

Next steps

Ingestion lifecycle

Follow parsing, chunking, embedding, indexing, and cleanup.

RAG lifecycle

See how processed content becomes cited evidence.