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

# Async invocation pattern

> How to submit large batch jobs with run_job()

Reducto provides an async job-based invocation that lets you submit a massive amount of documents for processing without waiting for each one to finish sequentially. This is ideal for large workloads where you want to queue and be notified of completion later.
This applies to all of our endpoints (/parse, /extract, /split).

<Tip>Using `.run_job()` has no limit on the amount of documents you can process concurrently.</Tip>

Each SDK has a `.run_job()` function that then returns a `job_id` that can be used with a webhook notification on completion, or poll via `client.job.get("<job_id>")`. If you'd rather not implement polling or webhooks, see our [`run()` batch processing](/v/legacy/parsing/batch-parsing) method.

<Info>
  Make sure you have a Reducto SDK set up, see how in [Quickstart](/quickstart).
</Info>

### Example

```python theme={null}
import time
from reducto import Reducto

client = Reducto()

submission = client.parse.run_job(document_url="https://ci.reducto.ai/onepager.pdf")

while (job := client.job.get(submission.job_id)).status == "Pending":
    time.sleep(1)

print(job.result)
```
