Skip to main content
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:
CategoryExtensions
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:
PlanMax File Size
Trial10 MB
Starter25 MB
Pro50 MB
EnterpriseConfigurable
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:
1

Start the upload

Submit your file using one of the methods above. Note the job_id in the response.
2

Poll the job endpoint

curl https://api.flexorch.com/v1/jobs/{job_id} \
  -H "X-API-KEY: dfx_your_key_here"
3

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.