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

# Artifacts resource

> List and download artifacts scoped to one run.

Access these methods through `client.artifacts`.

<h2 id="list">
  `client.artifacts.list`
</h2>

List one page matching an exact artifact path or directory prefix. limit must be between 1 and 1000.

```python Signature theme={null}
async def list(
    run_id: UUID,
    *,
    prefix: str = '',
    cursor: str | None = None,
    limit: int = 100,
) -> RunArtifactsResponse
```

**Parameters**

<div className="border-b border-gray-200 py-3 dark:border-gray-800">
  <div className="flex min-w-0 flex-wrap items-baseline gap-x-2 gap-y-1"><span className="break-all font-mono text-sm">{"run_id"}</span><span className="min-w-0 break-words text-sm text-gray-500 dark:text-gray-400">required · UUID</span></div>
</div>

<div className="border-b border-gray-200 py-3 dark:border-gray-800">
  <div className="flex min-w-0 flex-wrap items-baseline gap-x-2 gap-y-1"><span className="break-all font-mono text-sm">{"prefix"}</span><span className="min-w-0 break-words text-sm text-gray-500 dark:text-gray-400">optional · str · default: <code>{"''"}</code></span></div>
</div>

<div className="border-b border-gray-200 py-3 dark:border-gray-800">
  <div className="flex min-w-0 flex-wrap items-baseline gap-x-2 gap-y-1"><span className="break-all font-mono text-sm">{"cursor"}</span><span className="min-w-0 break-words text-sm text-gray-500 dark:text-gray-400">optional · str | None · default: <code>{"None"}</code></span></div>
</div>

<div className="border-b border-gray-200 py-3 dark:border-gray-800">
  <div className="flex min-w-0 flex-wrap items-baseline gap-x-2 gap-y-1"><span className="break-all font-mono text-sm">{"limit"}</span><span className="min-w-0 break-words text-sm text-gray-500 dark:text-gray-400">optional · int · default: <code>{"100"}</code></span></div>
</div>

**Returns**

<a href="/reference/sdk/models/artifacts#run-artifacts-response"><code>RunArtifactsResponse</code></a>

For examples, see the [Python SDK guide](/sdk/resources).

<h2 id="download-url">
  `client.artifacts.download_url`
</h2>

Create a temporary URL for one exact artifact path.

```python Signature theme={null}
async def download_url(run_id: UUID, path: str) -> RunArtifactDownloadResponse
```

**Parameters**

<div className="border-b border-gray-200 py-3 dark:border-gray-800">
  <div className="flex min-w-0 flex-wrap items-baseline gap-x-2 gap-y-1"><span className="break-all font-mono text-sm">{"run_id"}</span><span className="min-w-0 break-words text-sm text-gray-500 dark:text-gray-400">required · UUID</span></div>
</div>

<div className="border-b border-gray-200 py-3 dark:border-gray-800">
  <div className="flex min-w-0 flex-wrap items-baseline gap-x-2 gap-y-1"><span className="break-all font-mono text-sm">{"path"}</span><span className="min-w-0 break-words text-sm text-gray-500 dark:text-gray-400">required · str</span></div>
</div>

**Returns**

<a href="/reference/sdk/models/artifacts#run-artifact-download-response"><code>RunArtifactDownloadResponse</code></a>

For examples, see the [Python SDK guide](/sdk/resources).

<h2 id="download">
  `client.artifacts.download`
</h2>

Download a file or directory prefix into a new local directory.

Paths remain relative to the run. Existing output directories are refused. Positive max\_bytes and max\_entries limits bound the entire transfer.

```python Signature theme={null}
async def download(
    run_id: UUID,
    output_dir: str | Path,
    *,
    path: str = '',
    max_bytes: int = 5368709120,
    max_entries: int = 100000,
) -> Path
```

**Parameters**

<div className="border-b border-gray-200 py-3 dark:border-gray-800">
  <div className="flex min-w-0 flex-wrap items-baseline gap-x-2 gap-y-1"><span className="break-all font-mono text-sm">{"run_id"}</span><span className="min-w-0 break-words text-sm text-gray-500 dark:text-gray-400">required · UUID</span></div>
</div>

<div className="border-b border-gray-200 py-3 dark:border-gray-800">
  <div className="flex min-w-0 flex-wrap items-baseline gap-x-2 gap-y-1"><span className="break-all font-mono text-sm">{"output_dir"}</span><span className="min-w-0 break-words text-sm text-gray-500 dark:text-gray-400">required · str | Path</span></div>
</div>

<div className="border-b border-gray-200 py-3 dark:border-gray-800">
  <div className="flex min-w-0 flex-wrap items-baseline gap-x-2 gap-y-1"><span className="break-all font-mono text-sm">{"path"}</span><span className="min-w-0 break-words text-sm text-gray-500 dark:text-gray-400">optional · str · default: <code>{"''"}</code></span></div>
</div>

<div className="border-b border-gray-200 py-3 dark:border-gray-800">
  <div className="flex min-w-0 flex-wrap items-baseline gap-x-2 gap-y-1"><span className="break-all font-mono text-sm">{"max_bytes"}</span><span className="min-w-0 break-words text-sm text-gray-500 dark:text-gray-400">optional · int · default: <code>{"5368709120"}</code></span></div>
</div>

<div className="border-b border-gray-200 py-3 dark:border-gray-800">
  <div className="flex min-w-0 flex-wrap items-baseline gap-x-2 gap-y-1"><span className="break-all font-mono text-sm">{"max_entries"}</span><span className="min-w-0 break-words text-sm text-gray-500 dark:text-gray-400">optional · int · default: <code>{"100000"}</code></span></div>
</div>

**Returns**

Path

For examples, see the [Python SDK guide](/sdk/resources).
