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

# upload_file

Upload one or more files to a file input. Pass a selector for direct Playwright behavior, a prompt for AI-powered file input detection, or both. Python only.

```python theme={null}
# Direct selector
await page.upload_file("#file-input", files="/path/to/file.pdf")

# Multiple files
await page.upload_file("#file-input", files=["/path/to/file1.pdf", "/path/to/file2.pdf"])

# AI-powered file input detection
await page.upload_file(prompt="Upload the resume to the file input")

# Selector with AI fallback
await page.upload_file("#file-input", files="/path/to/file.pdf",
    prompt="Upload the resume to the file input")
```

| Parameter  | Type               | Required | Description                                                                   |
| ---------- | ------------------ | -------- | ----------------------------------------------------------------------------- |
| `selector` | `str`              | No       | CSS or XPath selector for the file input.                                     |
| `files`    | `str \| list[str]` | No       | File path or list of file paths to upload.                                    |
| `prompt`   | `str`              | No       | Natural-language description of the file input to target.                     |
| `ai`       | `str`              | No       | Controls AI behavior. Default `"fallback"` tries the selector first, then AI. |

Returns `str` - the resolved selector used.
