Document Types and Ingest Capacities
Supported File Types
There are four ways to upload content to GroundX:
- Ingest Local: uploads individual files from your local filesystem.
- Ingest Remote: uploads individual files hosted on a remote URL.
- Ingest Directories: uses the Python SDK to find files in a directory tree and upload them in batches.
- Crawl Website: follows website links and uploads the HTML to GroundX.
Supported document types:
Supported image types:
Maximum File Size
Free-trial file-size limits:
- Python SDK:
- 25 MB per file (for ingest, ingest_directory, or ingest_remote)
- 8 MB per file (for ingest_local)
- TypeScript SDK:
- 25 MB per file (for hosted files using either ingest or ingest_remote)
- 8 MB per file (for local files using either ingest or ingest_local)
- Direct API:
- 25 MB per file (for hosted files using ingest_remote)
- 8 MB per file (for local files using ingest_local)
Subscription file-size limits:
- Python SDK:
- 50 MB per file (for ingest, ingest_directory, or ingest_remote)
- 8 MB per file (for ingest_local)
- TypeScript SDK:
- 50 MB per file (for hosted files using either ingest or ingest_remote)
- 8 MB per file (for local files using either ingest or ingest_local)
- Direct API:
- 50 MB per file (for hosted files using ingest_remote)
- 8 MB per file (for local files using ingest_local)
The Python SDK uploads local files using temporary presigned URLs, then submits their hosted URLs through ingest_remote. This avoids the 8 MB limit on direct ingest_local requests.
For public files, TypeScript and REST callers can follow the same steps manually:
- Request a presigned URL from
https://api.eyelevel.ai/upload/file?name={fileName}&type={fileExtension}. - PUT the file to the returned
URL. - Submit its hosted URL as
sourceUrlin aningest_remoterequest.
An MCP host can use document_uploadlocal to get the presigned URL, then PUT the file and call document_ingestremote. The host must be able to read the local file and perform HTTP PUT. See Connect Hosted GroundX MCP Tools.
Protected files require the private-upload flow on a compatible deployment. See File Access and Sharing.
For oversized files, compress embedded assets such as images, or split the file into smaller documents.
Ingest Directories uses the Python SDK upload flow and its per-file limits. Direct Ingest Local requests remain limited to 8 MB.
Maximum Concurrent Files
At most 50 files can be ingested concurrently.
Ingest Directories in the Python SDK batches uploads according to batch_size. For manual batching, wait for each batch to finish using get_processing_status_by_id. See the Quickstart.
Document Type Specific Restrictions
PDF | PPTX | DOCX | HWP
Maximum Pages
PDF, PPTX, DOCX and HWP files are limited to 750 pages.
CSV | TSV | XLSX
Maximum Words
CSV, TSV and XLSX files are limited to 250,000 words for trial users and 500,000 words for subscribers.
Maximum Rows
CSV, TSV and XLSX files are limited to 1,500 rows.
TXT
Maximum Words
TXT files are limited to 250,000 words for trial users and 500,000 words for subscribers.
JSON
Maximum File Size
JSON files are limited to 5 MB, regardless of the general file-size limits above.
Maximum Levels
JSON files are limited to 20 levels of nested objects or arrays.
Visual X-Ray Support
Every supported document type can produce X-Ray analysis, available through the API and as a dashboard download.
These file types skip visual layout analysis and cannot be displayed in the dashboard’s visual X-Ray viewer:
- csv
- json
- tsv
- txt
- xlsx
Website Crawling
Use Crawl Website to ingest website content.
Trials allow up to 500 pages and a crawl depth of 5. Subscriptions allow up to 2,000 pages and a depth of 8.

