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

# Production Batch

> Estimate, submit, monitor, and download large Batch jobs.

# Production Batch

Prototype with priority `0`. Use priority `1` for the
[one-hour production SLA](/batch/run-model#job-priority-and-sla) and higher
quotas. Production jobs normally execute a published Function so the behavior
you evaluated is the behavior applied to the full dataset.

## Estimate before submitting

```python theme={null}
estimate_job_id = so.batch_run_function(
    name="document-summary",
    data="https://storage.example.com/input.parquet?signature=...",
    job_priority=1,
    dry_run=True,
    id_column="record_id",
)
```

A dry run creates an estimate job and returns its job ID. It does not launch
the full workload.

## Submit without loading the file locally

For large inputs, pass a short-lived HTTPS GET URL for a CSV or Parquet object.
We recommend using a presigned URL with a 1-hour expiration, as Sutro needs
to be able to download the file within that time frame.

```python theme={null}
job_id = so.batch_run_function(
    name="document-summary",
    data="https://storage.example.com/input.parquet?signature=...",
    job_priority=1,
    stay_attached=False,
    id_column="record_id",
)
```

Use an immutable object key and a read-only signing identity. Treat the full
presigned URL as a temporary credential.

<Note>
  CSV or Parquet columns must match the published Function's inputs. See your
  Function's configuration for the required columns.
</Note>

## Wait and download

Avoid materializing a large result as JSON:

```python theme={null}
so.await_job_completion(job_id, obtain_results=False)

if so.get_job_status(job_id) != "SUCCEEDED":
    raise RuntimeError("Job did not succeed")

so.download_job_results(
    job_id,
    output_path="results.parquet",
    include_inputs=True,
)
```

Parquet downloads support resuming after interruption. Keep your source object
until you have reconciled the result rows.
