---
title: "Start recording user actions"
method: POST
path: "/v1/browser/record/start"
tags: ["Browser"]
---

# Start recording user actions

`POST /v1/browser/record/start`

## Request

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

## Response `200`

Recording started

- object
  - `recording` true, required

## Other responses

- `409`: The route needs a live page session. Two types share this status and both clear the same way, by connecting: `not_connected` when nothing is attached at all, and `page_not_attached` when the browser is alive but its page session is not — Chrome closed the tab or detached the inspector, which parks the connection at browser level rather than tearing it down. Both carry `remedy` (`browser_connect action:connect`) and `remedyPath` (`POST /v1/browser/connect`). Branch on `error.type`, never on the 409 alone; the other 409s on browser routes (`conflict`, `dialog_pending`, `browser_consent_required`, `target_leased`, `instance_unknown`, `resource_admission_full`) must not be retried, and one of them mints a second OS consent prompt per attempt.

---

[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)
