---
title: "Perform a browser action (click, fill, navigate, etc.)"
method: POST
path: "/v1/browser/action"
tags: ["Browser"]
---

# Perform a browser action (click, fill, navigate, etc.)

`POST /v1/browser/action`

## Request

- Base URL: `http://localhost:9998`
- URL: `http://localhost:9998/v1/browser/action`
- Auth: HTTP bearer

Executes a browser action using AX-native selectors. Supports
click, fill, navigate, scroll, hover, select, and more.
Returns AX diff showing DOM changes.

## Request body

- object
  - `action` string, required: Action type: click, fill, navigate, scroll, hover, select, etc.
  - `selector` string: PiperSelector (e.g. "role:button:Submit", "label:Email")
  - `value` string: Value for fill, navigate URL, etc.
  - `url` string: URL for navigate. Only http and https pages load; a localhost or private-network URL needs allow_local.
  - `allow_local` boolean: navigate: may load a localhost or private-network URL (default false). The route's own field: the browser_action tool does not take it.

## Response `200`

Action result with AX diff

## Other responses

- `403`: The navigation guard refused the URL (navigation_refused)
- `409`: Not connected to a browser

---

[API](https://skmtc.dev/modelpiper/apis/toolpiper-api.md) · [All operations](https://skmtc.dev/modelpiper/apis/toolpiper-api/llms.txt) · [OpenAPI document](https://skmtc.dev/modelpiper/apis/toolpiper-api/revisions/6722bf56385c?raw)
