---
title: "Accessibility tree snapshot"
method: GET
path: "/v1/browser/snapshot"
tags: ["Browser"]
---

# Accessibility tree snapshot

`GET /v1/browser/snapshot`

## Request

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

Returns the accessibility tree of the selected page.

## Response `200`

Accessibility tree

- object
  - `tree` object: Recursive tree of accessibility nodes

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