# GET /v1/sessions/{session_id}

> Whether a session is still open, and what it was opened with.

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.

Whether a session is still open, and what it was opened with. Your key, or the session's own token.

Your API key, or a session's token, scope `runtime` or `all`. On the card: [`embed`](https://vestra.ai/developers/embed.md). Every call here is a checked sample.

## Request

Path:

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

## Answers 200

- `id` (`string`): The session (ses_...). Example: `ses_8h2`.
- `object` (`"session"`): Always session.
- `user_id` (`string | null`): Your id for its user; null on your company's own Bash.
- `conversation_id` (`string | null`): Its conversation (conv_...); null for a screen opened alone.
- `chat` (`boolean`): Whether it shows the conversation.
- `screen` (`false | "view" | "control"`): Its screen: view, control, or false for none.
- `voice` (`boolean`): Whether your user can talk by voice.
- `memory` (`boolean`): Whether it shows what Bash remembers.
- `expires_at` (`string`): When the token stops working, 15 minutes after it was made, as an ISO 8601 time.
- `status` (`"live" | "expired" | "revoked"`): live: its token works. expired: its 15 minutes are up. revoked: it was ended early.
- `screen_paused` (`true`, may be absent): A view-only screen while it is private: a person signs in on that computer (a browser fetch with front, a hand-off), or a private fetch runs or keeps its tab. Nothing shows, and GET /v1/sessions/{session_id}/screen answers 409 browser_in_use, until it is done. Absent otherwise.

## Code

**TypeScript**

```ts
const session = await vestra.sessions.get('ses_8h2');
```

**Python**

```python
session = vestra.sessions.get("ses_8h2")
```

**HTTP**

```bash
# Open a session on your server. Do this for the user signed in to your app. It gives them chat, approvals,
# the live screen and voice. The response has a url and a token, valid for 15 minutes. Put the url in an
# iframe with allow="microphone".
curl "$VESTRA_BASE_URL/v1/sessions" \
  -H "Authorization: Bearer $VESTRA_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{ "user_id": "traveller-42", "chat": true, "screen": "view", "voice": true }'

# Check the session. See whether it is still open.
curl "$VESTRA_BASE_URL/v1/sessions/ses_8h2" \
  -H "Authorization: Bearer $VESTRA_API_KEY"

# End the session. Its token stops working at once.
curl -X DELETE "$VESTRA_BASE_URL/v1/sessions/ses_8h2" \
  -H "Authorization: Bearer $VESTRA_API_KEY"
```

**MCP**

```json
{
  "method": "tools/call",
  "params": {
    "name": "embed",
    "arguments": { "user": "traveller-42", "memory": true }
  }
}
```

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