---
title: "Command the API session browser"
method: POST
path: "/chat-sessions/{sessionId}/browser/command"
tags: ["Chat sessions"]
---

# Command the API session browser

`POST /chat-sessions/{sessionId}/browser/command`

Same-user, API-origin session browser operation. sessionId is the public chatSessions id. Screenshot evidence is returned as URLs; browser identity persists across turns.

## Path parameters

- `sessionId` string, required

## Request body

- object
  - `commandId` string
  - `tabId` string
  - `command` union, required
    - object
      - `op` 'back', required
      - `observeAfter` 'a11y' | 'screenshot' | 'none'
    - object
      - `op` 'forward', required
      - `observeAfter` 'a11y' | 'screenshot' | 'none'
    - object
      - `op` 'reload', required
      - `observeAfter` 'a11y' | 'screenshot' | 'none'
    - object
      - `op` 'navigate', required
      - `url` string, uri, required
      - `newTab` boolean
      - `observeAfter` 'a11y' | 'screenshot' | 'none'
    - object
      - `op` 'observe', required
      - `mode` 'a11y' | 'screenshot' | 'text' | 'dom' | 'console' | 'network' | 'dialog' | 'url' | 'page_tools', required
      - `requestId` string
      - `rootRef` string
      - `rootSelector` string
      - `filter` 'interactive' | 'all'
    - object
      - `op` 'act', required
      - `verb` 'click' | 'type' | 'press' | 'scroll' | 'hover' | 'drag' | 'select' | 'close_tab' | 'activate_tab' | 'accept_dialog' | 'dismiss_dialog', required
      - `target` union
        - object
          - `ref` string, required
        - object
          - `selector` string, required
        - object
          - `coordinates` number[], required
      - `value` string
      - `expectedState` string
      - `observeAfter` 'a11y' | 'screenshot' | 'none'
    - object
      - `op` 'invoke_page_tool', required
      - `toolKey` string, required
      - `frameId` string
      - `input` unknown, required
    - object
      - `op` 'cancel_page_tool', required
      - `invocationId` string, required

## Response `200`

Session browser result. Unknown command outcomes must be inspected before retrying with a different command ID.

- object

## Other responses

- `400` — Invalid request or policy
- `401` — Authentication required
- `403` — Access denied
- `404` — Session not found or not owned by caller
- `409` — Session closed or conflicting command ID
- `429` — Rate limited
- `502` — Browser control plane unavailable

## Changes

- **2026-09-10** `b4b7857c1379` — 1 info
  - endpoint added

[Change history](https://skmtc.dev/mcpjam/apis/mcpjam-api/changes/chat-sessions/:sessionId/browser/command/post.md)

---

[API](https://skmtc.dev/mcpjam/apis/mcpjam-api.md) · [All operations](https://skmtc.dev/mcpjam/apis/mcpjam-api/llms.txt) · [OpenAPI document](https://skmtc.dev/mcpjam/apis/mcpjam-api/revisions/56b9d1dda7ea?raw)
