Supported File Types
Captain indexes the 186 file types below, sent through a direct upload, the dashboard, raw text, or a cloud storage connector. Each one is parsed, chunked, and embedded for search.
Documents
How the document lane works, with citations and the two processing tiers: Documents.
Sheets
How workbooks become row bands with provenance: Sheets.
Text and code
Chunking, JSON parsing scripts and the raw text route: Text and Code.
Every extension in this section is read as plain text and split into text chunks with a
page range. There is no syntax-aware parsing: a .py file and a .txt file go through the
same lane. For .json files, pass a parsing_script to control chunking.
Not indexed, by design: compiled or binary variants (.pyc, .pyo, .class, .o,
.so, .dll, .wasm, .jar, .svgz), .plist (often binary), and secret-bearing files
(.env, .pem, .key, .crt).
Files with no extension arriving through a cloud storage connector are not rejected up front. The indexer sniffs their content type (HTTP content type plus magic bytes) and indexes them when the content is a supported type.
Images
What an image becomes and how mask_pii treats it: Images.
Images are supported up to 200 megapixels decoded, and can run through mask_pii for
OCR-based redaction. See PII Masking.
Video
Clips, transcripts and descriptions: Video.
Audio
Clips and transcripts for audio files: Audio.
Video and audio detail, including transcript language control, lives on Multimodal Search.
Parts, relations and metadata in full: Email.
Every part carries these filterable metadata keys (empty string when the header is absent):
Not indexed: inline signature images, empty or duplicate attachments, and unsupported types. Re-indexing an email replaces its parts in place and removes attachments no longer present.
Size limits by type
Each type has its own per-file and per-request ceiling, and the ceiling also depends on how the file reaches Captain (dashboard, API, or a connector). See File Size Limits for the full breakdown.