You can get documents into FlexOrch three ways: a direct file upload, a multi-file batch request, or a connector pull from cloud storage. Once ingested, each file moves immediately through the processing pipeline and returns structured results you can query or export.
Supported File Types
FlexOrch accepts the following formats:
| Category | Extensions |
|---|
| Documents | .pdf, .docx, .txt |
| Spreadsheets | .xlsx |
| Web / Markup | .html, .htm |
| Email | .eml, .msg |
| E-invoices | .xml (FatturaPA, UBL/Peppol, GİB TR, XRechnung, ZUGFeRD) |
| Images | .jpg, .jpeg, .png, .tiff |
Image files and scanned PDFs are processed with OCR automatically.
CSV is not supported for upload. Use .xlsx instead for tabular data.
Single File Upload
Send a single document using a multipart/form-data request:
curl -X POST https://api.flexorch.com/v1/data-process/async \
-H "X-API-KEY: dfx_your_key_here" \
-F "files=@contract.pdf"
FlexOrch responds immediately with a job_id you use to poll for results:
{
"data": {
"job_ids": ["job_abc123"],
"status": "queued"
}
}
Multi-File Upload
Submit several files in one request by repeating the files= field. Each file receives its own job_id:
curl -X POST https://api.flexorch.com/v1/data-process/async \
-H "X-API-KEY: dfx_your_key_here" \
-F "files=@invoice_jan.pdf" \
-F "files=@invoice_feb.pdf" \
-F "files=@payroll_q1.xlsx"
{
"data": {
"job_ids": ["job_001", "job_002", "job_003"],
"status": "queued"
}
}
Upload from a Connector
If you have an S3, GCS, or Azure Blob connector configured, you can instruct FlexOrch to pull files directly from cloud storage — no local download required:
curl -X POST https://api.flexorch.com/v1/data-process/async \
-H "X-API-KEY: dfx_your_key_here" \
-H "Content-Type: application/json" \
-d '{
"source": {
"connector_id": 1,
"keys": ["documents/invoice_2024.pdf", "documents/payroll_q1.xlsx"]
}
}'
See Connectors for setup instructions.
File Size Limits
The maximum file size depends on your plan:
| Plan | Max File Size |
|---|
| Trial | 10 MB |
| Starter | 25 MB |
| Pro | 50 MB |
| Enterprise | Configurable |
Files that exceed the limit return 413 FILE_TOO_LARGE.
Duplicate Detection
FlexOrch computes a content hash for every upload. If you submit a file that has already been processed, no new credit is consumed and the existing IDs are returned immediately:
{
"data": {
"is_duplicate": true,
"existing_document_id": "doc_xyz",
"existing_job_id": "job_abc"
}
}
Polling for Results
After upload, poll the job endpoint until status is completed or failed:
Start the upload
Submit your file using one of the methods above. Note the job_id in the response.
Poll the job endpoint
curl https://api.flexorch.com/v1/jobs/{job_id} \
-H "X-API-KEY: dfx_your_key_here"
Read the result
When status is completed, the response body contains extracted fields, quality scores, and PII findings. If you are using the Python SDK, call job.wait_until_done() and the SDK handles polling automatically.
Typical processing time is 5–30 seconds depending on file size and type. Image-heavy PDFs take longer because OCR runs on every page.