> ## Documentation Index
> Fetch the complete documentation index at: https://agno-v2.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# File Upload

> Upload and reference files using Anthropic's Files API in Agno.

With Anthropic's [Files API](https://platform.claude.com/docs/en/build-with-claude/files), you can upload files and later reference them in other API calls.
This is handy when a file is referenced multiple times in the same flow.

## Usage

**1. Install dependencies**

```bash theme={null}
uv pip install -U anthropic agno
```

**2. Export your Anthropic API key**

```bash Mac/Linux theme={null}
export ANTHROPIC_API_KEY="your_anthropic_api_key_here"
```

```powershell Windows theme={null}
$Env:ANTHROPIC_API_KEY="your_anthropic_api_key_here"
```

**3. Upload a file**

Initialize the Anthropic client and use `client.beta.files.upload`:

```python theme={null}
from pathlib import Path

from anthropic import Anthropic

file_path = Path("path/to/your/file.pdf")

client = Anthropic()
uploaded_file = client.beta.files.upload(file=file_path)
```

**4. Initialize the Claude model**

When initializing the `Claude` model, pass the necessary beta header:

```python theme={null}
from agno.agent import Agent
from agno.models.anthropic import Claude

agent = Agent(
    model=Claude(
        id="claude-opus-4-20250514",
        betas=["files-api-2025-04-14"],
    )
)
```

**5. Reference the file**

You can now reference the uploaded file when interacting with your Agno agent:

```python theme={null}
from agno.media import File

agent.print_response(
    "Summarize the contents of the attached file.",
    files=[File(external=uploaded_file)],
)
```

Uploaded files count against storage limits. See Anthropic's [docs](https://platform.claude.com/docs/en/build-with-claude/files#file-storage-and-limits) for the details.

## Working example

```python cookbook/90_models/anthropic/pdf_input_file_upload.py theme={null}
from pathlib import Path

from agno.agent import Agent
from agno.media import File
from agno.models.anthropic import Claude
from agno.utils.media import download_file
from anthropic import Anthropic

pdf_path = Path(__file__).parent.joinpath("ThaiRecipes.pdf")

# Download the file using the download_file function
download_file(
    "https://agno-public.s3.amazonaws.com/recipes/ThaiRecipes.pdf", str(pdf_path)
)

# Initialize Anthropic client
client = Anthropic()

# Upload the file to Anthropic
uploaded_file = client.beta.files.upload(
    file=Path(pdf_path),
)

if uploaded_file is not None:
    agent = Agent(
        model=Claude(
            id="claude-opus-4-20250514",
            betas=["files-api-2025-04-14"],
        ),
        markdown=True,
    )

    agent.print_response(
        "Summarize the contents of the attached file.",
        files=[File(external=uploaded_file)],
    )
```


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.