Skip to main content
Format support varies per operation. Three layers narrow what each call will accept:
  1. Upload inspection — NDI inspects a bounded prefix of the bytes on upload. A conclusive signature must agree with the filename extension. If the extension is missing or unknown, a recognized signature supplies the effective format. Formats without a reliable prefix signature continue to use the extension.
  2. Operation-level gates — each workflow declares the file types it handles. audio, video, and jsonl are not accepted by split, classify, or extract, for example.
  3. Extension exceptions within a type — a few types have sub-extension restrictions. parse accepts most image formats but not .bmp; split and extract accept spreadsheets but not .parquet.
Checking any one layer alone gives an incomplete picture: EXTENSION_MAP alone overstates support, and a workflow’s file-type gate alone misses the extension exceptions. The multipart Content-Type is advisory and does not decide admission. NDI does not read the full file to identify its format; it uses a bounded prefix, then streams the upload. The original filename is preserved for display and downloads, while the effective format controls routing, stored object metadata, and the media type used for previews and downloads.

Per-operation matrix

yes — the file type is accepted and processed. no — the operation rejects this type (returns unsupported_file_type). note — accepted with a qualification described below the table.

Notes

spreadsheet_parquet — .parquet maps to the spreadsheet file type but is handled by a separate columnar path. split and extract reject it explicitly; parse, classify, and ground process it via their parquet paths. image_bmp — .bmp maps to the image file type. parse validates the extension against its supported image set (.png, .jpg, .jpeg, .tiff, .tif, .webp) and rejects .bmp. All other operations accept image files by type only and do not check the extension further. markdown — parse UTF-8-decodes .md/.mdx and uploads the source as the markdown artifact (identity pass-through). The other operations resolve the source URL directly as markdown without reparsing. Large plaintext — workspace .txt upload, ingestion, search/read, and Parse support sources up to 1 GiB. Large Parse results expose complete text at document.content_url and keep only a representative preview inline. Split, Extract, and Ground still require .txt sources to be at most 256 MiB. .log, .xml, .md, and .mdx keep their existing source limits. video and audio — parse transcribes audio and video. It validates the extension: accepted video extensions are .mp4, .mov, .avi, .mkv; accepted audio extensions are .mp3, .wav, .m4a, .flac, .mpga, .oga, .ogg. An extension that maps to video or audio but is not on the respective list is rejected by parse. Ground semantics — ground accepts every file type in the table above and returns a structured response for each target. A type it cannot search returns found=false for every target rather than an error; today no type falls into that case.

Ingest size caps

These ceilings apply to workspace ingestion, not to granular uploads. Granular uploads have a separate per-key limit; see Errors and limits.