# GET /v1/sessions/{session_id}/screen

> With the session's token: the stream credentials of the user's Bash browser, good for 5 minutes.

In [Sessions API](https://vestra.ai/developers/reference/api/sessions.md): Bash in a browser: its live screen, a voice call, or the whole of Bash inside your app.

Send `Authorization: Bearer vk_test_...` on every call.

With the session's token: the stream credentials of the user's Bash browser, good for 5 minutes. For a session opened with a screen. 409 payment_in_progress while the person pays for something in their browser.

A session's token. On the card: [`watch`](https://vestra.ai/developers/watch.md). Over HTTP it is made from the contract: fill in each {…} and every value.

## Request

Path:

- `session_id` (`string`, required): The session's id (`ses_...`).

## Answers 200

- `object` (`"browser_stream"`): Always browser_stream.
- `neko_url` (`string`): The address of the screen's stream.
- `preview_token` (`string | null`): A second token the stream address asks for, when it asks for one; null otherwise.
- `preview_token_param` (`string`, may be absent): The query parameter preview_token goes in, on the stream address and its picture. Absent: bl_preview_token. Example: `_token`.
- `neko_token` (`string`): The token for the screen's stream: good for 5 minutes, so read this again for a fresh one.
- `ice_servers` (`object[]`): Servers that help the WebRTC connection to the screen through firewalls; empty when none are set.
  - `urls` (`string[]`): The server's addresses (stun: or turn:).
  - `username` (`string`, may be absent): Its username, for a TURN server.
  - `credential` (`string`, may be absent): Its password, for a TURN server.
- `width` (`integer`): The screen's width in pixels. Example: `1440`.
- `height` (`integer`): The screen's height in pixels. Example: `900`.
- `crop` (`object`, may be absent): While a hand-off is open on the screen (a browser fetch with front, such as a sign-in): the part of the screen its page fills, at a phone's size, or only the element its front_crop named. Show only this part, and map taps into it. Absent: show the whole screen.
  - `x` (`integer`): Its left edge, in screen pixels.
  - `y` (`integer`): Its top edge, in screen pixels.
  - `width` (`integer`): Its width, in screen pixels.
  - `height` (`integer`): Its height, in screen pixels.
- `crop_pending` (`true`, may be absent): A hand-off's front_crop is not on its page yet (for up to 20 seconds from its start): show no picture yet, and read this again in a couple of seconds for its crop. Absent: crop says what to show.

## Code

**TypeScript**

```ts
const session = await vestra.user('traveller-42').watch();
const screen = await session.screen();
```

**Python**

```python
session = vestra.user("traveller-42").watch()
screen = session.screen()
```

**HTTP**

```bash
curl "$VESTRA_BASE_URL/v1/sessions/{session_id}/screen" \
  -H "Authorization: Bearer $SESSION_TOKEN"
```

**CLI, MCP**: No sample in your language for this route, so here it is over HTTP.
