# Tabs Tabs are the main execution surface for browsing, extracting, and interacting with pages. Use tab-scoped routes once you already have a tab ID. Use instance-scoped routes when you need to create a new tab in a specific instance. Tab IDs should be treated as opaque values returned by the API. Do not construct them yourself or assume one stable format across all routes. ## Shorthand Browser Commands Top-level browser commands such as `nav`, `snap`, `text`, `click`, `type`, `fill`, `pdf`, `ss`, `eval`, and `health` now have their own quick reference pages. Use those pages when you want the shorthand route plus the matching CLI command: - [Health](./health.md) - [Navigate](./navigate.md) - [Snapshot](./snapshot.md) - [Text](./text.md) - [Click](./click.md) - [Type](./type.md) - [Fill](./fill.md) - [Screenshot](./screenshot.md) - [PDF](./pdf.md) - [Eval](./eval.md) - [Press](./press.md) - [Hover](./hover.md) - [Scroll](./scroll.md) - [Select](./select.md) - [Focus](./focus.md) ## Open A Tab In A Specific Instance ```bash curl -X POST http://localhost:9867/instances/inst_ea2e747f/tabs/open \ -H "Content-Type: application/json" \ -d '{"url":"https://pinchtab.com"}' # Response { "tabId": "8f9c7d4e1234567890abcdef12345678", "url": "https://pinchtab.com", "title": "PinchTab" } ``` There is no dedicated instance-scoped `tab open` CLI command today. If you want a CLI shortcut that opens a tab and navigates it, use: ```bash pinchtab instance navigate inst_ea2e747f https://pinchtab.com ``` ## List Tabs ### Shorthand Or Bridge List ```bash curl http://localhost:9867/tabs # CLI Alternative pinchtab tab # Response { "tabs": [ { "id": "8f9c7d4e1234567890abcdef12345678", "url": "https://pinchtab.com", "title": "PinchTab", "type": "page" } ] } ``` Notes: - `GET /tabs` is not a fleet-wide orchestrator inventory - in bridge mode or shorthand mode it lists tabs from the active browser context - `pinchtab tab` follows that shorthand behavior ### One Instance ```bash curl http://localhost:9867/instances/inst_ea2e747f/tabs # Response [ { "id": "8f9c7d4e1234567890abcdef12345678", "instanceId": "inst_ea2e747f", "url": "https://pinchtab.com", "title": "PinchTab" } ] ``` ### All Running Instances ```bash curl http://localhost:9867/instances/tabs ``` Use `GET /instances/tabs` when you need the fleet-wide view. ## Navigate An Existing Tab ```bash curl -X POST http://localhost:9867/tabs//navigate \ -H "Content-Type: application/json" \ -d '{"url":"https://example.com"}' # CLI Alternative pinchtab tab navigate https://example.com # Response { "tabId": "8f9c7d4e1234567890abcdef12345678", "url": "https://example.com", "title": "Example Domain" } ``` ## Snapshot ```bash curl "http://localhost:9867/tabs//snapshot?interactive=true&compact=true" # CLI Alternative pinchtab tab snapshot -i -c ``` Use this to retrieve the accessibility snapshot and element refs for the page. ## Text ```bash curl "http://localhost:9867/tabs//text?raw=true" # CLI Alternative pinchtab tab text --raw ``` ## Find ```bash curl -X POST http://localhost:9867/tabs//find \ -H "Content-Type: application/json" \ -d '{"query":"login button"}' # Response { "best_ref": "e5", "confidence": "high", "score": 0.85 } ``` There is no dedicated CLI `find` command today. ## Action ```bash curl -X POST http://localhost:9867/tabs//action \ -H "Content-Type: application/json" \ -d '{"kind":"click","ref":"e5"}' # CLI Alternative pinchtab tab click e5 ``` Other CLI-backed tab operations include: - `pinchtab tab type ` - `pinchtab tab fill ` - `pinchtab tab press ` - `pinchtab tab hover ` - `pinchtab tab scroll ` - `pinchtab tab select ` - `pinchtab tab focus ` ## Screenshot ```bash curl "http://localhost:9867/tabs//screenshot?raw=true" > out.png # CLI Alternative pinchtab tab screenshot -o out.png ``` ## PDF ```bash curl "http://localhost:9867/tabs//pdf?raw=true" > page.pdf # CLI Alternative pinchtab tab pdf -o page.pdf ``` ## Cookies ```bash curl http://localhost:9867/tabs//cookies # CLI Alternative pinchtab tab cookies ``` ## Metrics ```bash curl http://localhost:9867/tabs//metrics ``` This returns aggregate browser metrics for the tab's owning instance, not isolated per-tab memory. ## Lock And Unlock Tab lock/unlock is **API-only** — no CLI commands exist yet. ### Lock A Specific Tab ```bash curl -X POST http://localhost:9867/tabs//lock \ -H "Content-Type: application/json" \ -d '{"owner":"my-agent","ttl":60}' ``` ### Lock The Active Tab ```bash curl -X POST http://localhost:9867/tab/lock \ -H "Content-Type: application/json" \ -d '{"owner":"my-agent","ttl":60}' ``` ### Unlock A Specific Tab ```bash curl -X POST http://localhost:9867/tabs//unlock \ -H "Content-Type: application/json" \ -d '{"owner":"my-agent"}' ``` ### Unlock The Active Tab ```bash curl -X POST http://localhost:9867/tab/unlock \ -H "Content-Type: application/json" \ -d '{"owner":"my-agent"}' ``` ## Close A Tab ```bash curl -X POST http://localhost:9867/tabs//close # CLI Alternative pinchtab tab close # Response { "status": "closed" } ``` ## Important Limits - **There is no `GET /tabs/{id}` endpoint** for fetching single tab info. Use `GET /tabs` to list all tabs or access tab-scoped sub-paths like `/tabs/{id}/snapshot`, `/tabs/{id}/action`, etc. - `GET /tabs` and `GET /instances/tabs` serve different purposes and should not be treated as interchangeable