> For clean Markdown of any page, append .md to the page URL.
> For a complete documentation index, see https://docs.chaser.sh/llms.txt.
> For AI client integration (Claude Code, Cursor, etc.), connect to the MCP server at https://docs.chaser.sh/_mcp/server.

# Live View

Watch a session in real time. Mint a preview token, open the stream URL in a browser, and see the session framebuffer at 5 fps. Click and tap through the stream back into the session.

## Minting a preview token

```bash
curl -s https://api.chaser.sh/v1/sessions/{session_id}/preview-token \
  -X POST \
  -H "Authorization: Bearer $CHASER_KEY" \
  -H "Content-Type: application/json" \
  -d '{}' | jq
```

Response:

```json
{
  "url": "wss://stream.chaser.sh/sessions/{session_id}/preview?token=eyJ...",
  "expires_at": "2026-06-13T11:54:41.836Z",
  "input_enabled": true,
  "fps": 5
}
```

| Field | Description |
|---|---|
| `url` | WebSocket URL for the preview stream |
| `expires_at` | Token validity (ISO 8601 timestamp). |
| `input_enabled` | Whether click/tap input is forwarded to the session. |
| `fps` | Frame rate (currently 5). |

## Opening the stream

The preview URL is a WebSocket endpoint designed to be consumed by a browser-based player. Open it in the Chaser dashboard's session detail page, or connect directly:

```
https://chaser.sh/dashboard/sessions/{session_id}
```

The dashboard renders the stream using a `<canvas>` element and forwards mouse and touch events back through the WebSocket.

## Using live view for captchas

When a target presents a captcha, open the live view, solve it by clicking through the stream, and let your automation continue. The session sees genuine user input — trusted events from real mouse and touch interactions — not synthetic `dispatchMouseEvent` calls.

This is the difference between a captcha that fails and one that passes: the input events carry the `isTrusted` property that bot-detection libraries check.

## Input forwarding

When `input_enabled: true` (the default), clicks and taps on the preview canvas are forwarded to the session as native input events. Keyboard input is forwarded when the preview canvas has focus.

Events are translated at the viewport level — a click at pixel (x, y) on the canvas becomes a click at (x, y) on the session's screen.

## Token lifecycle

- Tokens expire (check `expires_at`). Mint a new one to resume.
- Deleting the session invalidates all outstanding tokens.
- Tokens are single-workspace — a token for workspace A cannot access workspace B's sessions.