> ## Documentation Index
> Fetch the complete documentation index at: https://docs.unsiloed.ai/docs/llms.txt
> Use this file to discover all available pages before exploring further.

# Processing Modes

> Preset parameter bundles for the /parse endpoint: Fast, Accurate, Agentic Lite, and Agentic.

Instead of configuring `ocr_engine`, `segment_processing`, `agentic_ocr`, and `merge_tables` individually, you can apply a preset mode that bundles a recommended combination of all four. The parser ships with four:

<div className="grid sm:grid-cols-1 md:grid-cols-2 gap-4 mt-6">
  <div className="border border-gray-200 rounded-xl p-4 h-full">
    <div className="flex items-center gap-2 mb-1">
      <Icon icon="bolt" color="#F861A8" />

      <h3 className="!mt-0 !mb-0 !text-lg">Fast</h3>
    </div>

    <p className="!mt-0 !mb-0">Optimized for speed. Best for standard documents with clean text and simple tables.</p>
  </div>

  <div className="border border-gray-200 rounded-xl p-4 h-full">
    <div className="flex items-center gap-2 mb-1">
      <Icon icon="bullseye" color="#F861A8" />

      <h3 className="!mt-0 !mb-0 !text-lg">Accurate</h3>
    </div>

    <p className="!mt-0 !mb-0">Balanced accuracy and performance. Ideal for complex layouts and detailed tables.</p>
  </div>

  <div className="border border-gray-200 rounded-xl p-4 h-full">
    <div className="flex items-center gap-2 mb-1">
      <Icon icon="feather" color="#F861A8" />

      <h3 className="!mt-0 !mb-0 !text-lg">Agentic Lite</h3>
    </div>

    <p className="!mt-0 !mb-0">An agent reviews each segment, flags low-confidence text, and re-reads it against the source to resolve errors at faster speeds. Best for text-heavy documents.</p>
  </div>

  <div className="border border-gray-200 rounded-xl p-4 h-full">
    <div className="flex items-center gap-2 mb-1">
      <Icon icon="brain" color="#F861A8" />

      <h3 className="!mt-0 !mb-0 !text-lg">Agentic</h3>
    </div>

    <p className="!mt-0 !mb-0">An agent reviews every segment, reasons over ambiguous or low-confidence text, and re-reads until resolved for maximum accuracy. Best for critical documents requiring the highest fidelity.</p>
  </div>
</div>

## Choosing a Mode

The four modes trade speed for fidelity. The response shape is the same across them in most cases, though jobs submitted with `merge_tables` (Agentic Lite and Agentic) can return a cached cross-page merged result instead (see the [parse job status reference](/api-reference/parser/get-parse-job-status)). Start with Fast and step up only when the output misses detail your pipeline depends on.

| Mode             | Speed    | Table handling                                                    | Reach for it when                                                                  |
| ---------------- | -------- | ----------------------------------------------------------------- | ---------------------------------------------------------------------------------- |
| **Fast**         | Fastest  | Single-pass tables                                                | Documents are clean and digital: typed invoices, receipts, and simple tables.      |
| **Accurate**     | Moderate | Higher-fidelity single-pass tables                                | Layouts are complex or multi-column, but tables stay within a page.                |
| **Agentic Lite** | Slower   | Cross-page tables merged; each segment agentically re-read        | Text-heavy documents that need verification, including tables spanning pages.      |
| **Agentic**      | Slowest  | Cross-page tables merged; every segment re-read and reasoned over | Every value has to be right: contracts, regulatory filings, and low-quality scans. |

<Warning>
  Cross-page table merging (`merge_tables`) is on only for **Agentic Lite** and **Agentic** — Fast and Accurate leave it off. If a table spans pages and you need it stitched into one segment, use an Agentic mode or pass `merge_tables=true` alongside your chosen mode's parameters.
</Warning>

## Mode Parameters

Each mode is shorthand for a specific set of parameters. To use a mode, pass the values from its column in your `/parse` request.

| Parameter                           | Fast           | Accurate       | Agentic Lite   | Agentic        |
| ----------------------------------- | -------------- | -------------- | -------------- | -------------- |
| `ocr_engine`                        | `UnsiloedBeta` | `UnsiloedBeta` | `UnsiloedBeta` | `UnsiloedBeta` |
| `segment_processing.Table.html`     | `VLM`          | `VLM`          | `VLM`          | `VLM`          |
| `segment_processing.Table.model_id` | `astra_lite`   | `astra_v2`     | `astra`        | `astra_v3`     |
| `agentic_ocr`                       | `null`         | `null`         | `standard`     | `advanced`     |
| `merge_tables`                      | `false`        | `false`        | `true`         | `true`         |

<Note>
  Modes are preset configurations. You can override any individual parameter after applying one. See the [Parse API reference](/api-reference/parser/parse-document) for the full parameter list.
</Note>

## Applying a Mode

The submit-and-poll flow is the same as in the [Quickstart](/quickstart); only the request body differs. The snippets below show each mode in Python — translate to JavaScript or cURL by changing the request body shape, not the parameter values.

<CodeGroup>
  ```python Fast theme={null}
  import os
  import requests

  API_KEY = os.environ["UNSILOED_API_KEY"]
  BASE_URL = "https://prod.visionapi.unsiloed.ai"

  with open("document.pdf", "rb") as f:
      response = requests.post(
          f"{BASE_URL}/parse",
          headers={"api-key": API_KEY},
          files={"file": ("document.pdf", f, "application/pdf")},
          data={
              "ocr_engine": "UnsiloedBeta",
              "merge_tables": "false",
              "agentic_ocr": "",
              "segment_processing": '{"Table": {"html": "VLM", "model_id": "astra_lite"}}',
          },
      )
  response.raise_for_status()
  job_id = response.json()["job_id"]
  print(f"Job submitted: {job_id}")
  ```

  ```python Accurate theme={null}
  import os
  import requests

  API_KEY = os.environ["UNSILOED_API_KEY"]
  BASE_URL = "https://prod.visionapi.unsiloed.ai"

  with open("document.pdf", "rb") as f:
      response = requests.post(
          f"{BASE_URL}/parse",
          headers={"api-key": API_KEY},
          files={"file": ("document.pdf", f, "application/pdf")},
          data={
              "ocr_engine": "UnsiloedBeta",
              "merge_tables": "false",
              "agentic_ocr": "",
              "segment_processing": '{"Table": {"html": "VLM", "model_id": "astra_v2"}}',
          },
      )
  response.raise_for_status()
  job_id = response.json()["job_id"]
  print(f"Job submitted: {job_id}")
  ```

  ```python Agentic Lite theme={null}
  import os
  import requests

  API_KEY = os.environ["UNSILOED_API_KEY"]
  BASE_URL = "https://prod.visionapi.unsiloed.ai"

  with open("document.pdf", "rb") as f:
      response = requests.post(
          f"{BASE_URL}/parse",
          headers={"api-key": API_KEY},
          files={"file": ("document.pdf", f, "application/pdf")},
          data={
              "ocr_engine": "UnsiloedBeta",
              "merge_tables": "true",
              "agentic_ocr": "standard",
              "segment_processing": '{"Table": {"html": "VLM", "model_id": "astra"}}',
          },
      )
  response.raise_for_status()
  job_id = response.json()["job_id"]
  print(f"Job submitted: {job_id}")
  ```

  ```python Agentic theme={null}
  import os
  import requests

  API_KEY = os.environ["UNSILOED_API_KEY"]
  BASE_URL = "https://prod.visionapi.unsiloed.ai"

  with open("document.pdf", "rb") as f:
      response = requests.post(
          f"{BASE_URL}/parse",
          headers={"api-key": API_KEY},
          files={"file": ("document.pdf", f, "application/pdf")},
          data={
              "ocr_engine": "UnsiloedBeta",
              "merge_tables": "true",
              "agentic_ocr": "advanced",
              "segment_processing": '{"Table": {"html": "VLM", "model_id": "astra_v3"}}',
          },
      )
  response.raise_for_status()
  job_id = response.json()["job_id"]
  print(f"Job submitted: {job_id}")
  ```
</CodeGroup>
