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

# Agent (v2)

> V2 agent models and file handling.

## Models

| Model                     | API String                   | Cost per Step |
| ------------------------- | ---------------------------- | ------------- |
| Browser Use 2.0 (default) | `browser-use-2.0`            | \$0.006       |
| O3                        | `o3`                         | \$0.03        |
| Gemini Flash Latest       | `gemini-flash-latest`        | \$0.0075      |
| Gemini Flash Lite Latest  | `gemini-flash-lite-latest`   | \$0.005       |
| Claude Sonnet 4.5         | `claude-sonnet-4-5-20250929` | \$0.05        |
| Claude Sonnet 4.6         | `claude-sonnet-4.6`          | \$0.05        |

Pass `llm` explicitly to select a model:

<CodeGroup>
  ```python Python theme={null}
  result = await client.run("...", llm="browser-use-2.0")
  ```

  ```typescript TypeScript theme={null}
  const result = await client.run("...", { llm: "browser-use-2.0" });
  ```
</CodeGroup>

***

## Files

Upload images, PDFs, documents, and text files (10 MB max) to sessions, and download output files from completed tasks.

### Upload a file

Get a presigned URL, then upload via POST.

<CodeGroup>
  ```python Python theme={null}
  import httpx
  from browser_use_sdk import AsyncBrowserUse

  client = AsyncBrowserUse()
  session = await client.sessions.create()

  upload = await client.files.session_url(
      session.id,
      file_name="input.pdf",
      content_type="application/pdf",
      size_bytes=1024,
  )

  with open("input.pdf", "rb") as f:
      async with httpx.AsyncClient() as http:
          await http.post(upload.url, content=f.read(), headers={"Content-Type": "application/pdf"})

  result = await client.run("Summarize the uploaded PDF", session_id=session.id)
  ```

  ```typescript TypeScript theme={null}
  import { BrowserUse } from "browser-use-sdk";
  import { readFileSync } from "fs";

  const client = new BrowserUse();
  const session = await client.sessions.create();

  const upload = await client.files.sessionUrl(session.id, {
    fileName: "input.pdf",
    contentType: "application/pdf",
    sizeBytes: 1024,
  });

  await fetch(upload.url, {
    method: "POST",
    body: readFileSync("input.pdf"),
    headers: { "Content-Type": "application/pdf" },
  });

  const result = await client.run("Summarize the uploaded PDF", { sessionId: session.id });
  ```
</CodeGroup>

<Warning>
  Presigned URLs expire after 120 seconds. Max file size: 10 MB.
</Warning>

### Download task output files

<CodeGroup>
  ```python Python theme={null}
  result = await client.tasks.get(task_id)
  for file in result.output_files:
      output = await client.files.task_output(task_id, file.id)
      print(output.download_url)  # download URL
  ```

  ```typescript TypeScript theme={null}
  const result = await client.tasks.get(taskId);
  for (const file of result.outputFiles) {
    const output = await client.files.taskOutput(taskId, file.id);
    console.log(output.downloadUrl);
  }
  ```
</CodeGroup>

***

## Streaming steps

Use `async for` to yield steps as the agent works.

<CodeGroup>
  ```python Python theme={null}
  from browser_use_sdk import AsyncBrowserUse

  client = AsyncBrowserUse()
  run = client.run("Find the most upvoted post on Reddit r/technology today")
  async for step in run:
      print(f"Step {step.number}: {step.next_goal}")
      print(f"  URL: {step.url}")

  print(run.result.output)  # final result after iteration
  ```

  ```typescript TypeScript theme={null}
  import { BrowserUse } from "browser-use-sdk";

  const client = new BrowserUse();
  const run = client.run("Find the most upvoted post on Reddit r/technology today");
  for await (const step of run) {
    console.log(`Step ${step.number}: ${step.nextGoal}`);
    console.log(`  URL: ${step.url}`);
  }

  console.log(run.result?.output);  // final result after iteration
  ```
</CodeGroup>

***

## Key parameters

| Parameter                  | Type              | Description                                                                      |
| -------------------------- | ----------------- | -------------------------------------------------------------------------------- |
| `task`                     | `str`             | What you want the agent to do. 1-50,000 characters.                              |
| `llm`                      | `str`             | Model override. Default: Browser Use 2.0.                                        |
| `output_schema` / `schema` | Pydantic / Zod    | Schema for structured output.                                                    |
| `session_id`               | `str`             | Reuse an existing session. Omit for auto-session.                                |
| `start_url`                | `str`             | Initial page URL. Saves steps — send the agent directly there.                   |
| `secrets`                  | `dict`            | Domain-specific credentials. See [Authentication](/cloud/guides/authentication). |
| `allowed_domains`          | `list[str]`       | Restrict agent to these domains only.                                            |
| `session_settings`         | `SessionSettings` | Proxy, profile, browser config. See [Profiles](/cloud/guides/authentication).    |
| `flash_mode`               | `bool`            | Faster but less careful navigation.                                              |
| `thinking`                 | `bool`            | Enable extended reasoning.                                                       |
| `vision`                   | `bool \| str`     | Enable screenshots for the agent.                                                |
| `highlight_elements`       | `bool`            | Highlight interactive elements on the page.                                      |
| `system_prompt_extension`  | `str`             | Append custom instructions to the system prompt.                                 |
| `judge`                    | `bool`            | Enable quality judge to verify output.                                           |
| `skill_ids`                | `list[str]`       | Skills the agent can use during the task.                                        |
| `op_vault_id`              | `str`             | 1Password vault ID for auto-fill credentials and 2FA.                            |
| `metadata`                 | `dict[str, str]`  | Custom metadata attached to the task.                                            |
