> ## 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.

# Get a results URL

> Create or reuse a unified Parquet artifact and return presigned download URLs.

Use this endpoint for large or resumable downloads. The SDK wraps it with [`results_download_url()` and `download_job_results()`](/reference/python-sdk/job-methods#download-large-results).

<ParamField path="job_id" type="string" required>A successfully completed job.</ParamField>

<ParamField query="format" type="enum" default="parquet">
  Only `parquet` is supported; other values return `400`.
</ParamField>

<ParamField query="include_inputs" type="boolean" default="false">Include source inputs.</ParamField>

<ParamField query="include_cumulative_logprobs" type="boolean" default="false">Include cumulative log probabilities.</ParamField>

<ParamField query="expires_in_seconds" type="integer" default="3600">
  URL lifetime from 1–604800 seconds (seven days).
</ParamField>

## Headers

<ParamField header="Authorization" type="string" required>
  Deployment API key in the form `Key YOUR_SUTRO_API_KEY`. Do not reuse this
  header with the returned presigned URLs.
</ParamField>

```bash theme={null}
curl "https://YOUR-SUTRO-DEPLOYMENT/v1/jobs/JOB_ID/results-url?include_inputs=true&expires_in_seconds=3600" \
  -H "Authorization: Key YOUR_SUTRO_API_KEY"
```

```json theme={null}
{
  "job_id": "JOB_ID",
  "format": "parquet",
  "include_inputs": true,
  "include_cumulative_logprobs": false,
  "expires_in_seconds": 3600,
  "artifact": {
    "bucket": "sutro-data",
    "key": "jobs/.../results/...parquet",
    "filename": "sutro-results~JOB_ID~inputs=1~logprobs=0.parquet",
    "size_bytes": 987654321
  },
  "urls": {
    "get": "https://presigned-object-url/...",
    "head": "https://presigned-object-url/..."
  }
}
```

Use `urls.head` with `HEAD` to read `Content-Length` and `ETag`. Use `urls.get` with `GET`; it supports `Range: bytes=...` for partial and resumed downloads. Do not send the Sutro authorization header to either object-storage URL—the signature is the credential. Treat both URLs as secrets until expiration.

The job must have succeeded; other states return `409`. The artifact is materialized once and cached. A configured `id_column_name` is always retained, even when inputs are excluded.
