> For a complete index of all SignalWire documentation pages, fetch https://signalwire.com/docs/llms.txt

# session

> The active client session — call lists, authentication state, and the inbound-call stream.

```ts
get session(): ClientSessionWrapper
```

The active client session. Exposes the [`SessionState`](/docs/browser-sdk/v4/reference/interfaces/session-state)
surface — including the lists of active and inbound calls — once the
client is connected and authenticated.

This is the entry point for **inbound calls**: subscribe to
[`session.incomingCalls$`](/docs/browser-sdk/v4/reference/interfaces/session-state#incomingcalls-1)
after calling [`register()`](/docs/browser-sdk/v4/reference/signalwire/register)
to receive notification of ringing calls.

## **Examples**

### Inbound calls

```ts
await client.register();

client.session.incomingCalls$.subscribe((calls) => {
  const ringing = calls.find((c) => c.status === 'ringing');
  if (ringing) {
    ringing.answer({ audio: true, video: true });
  }
});
```

### Reattached calls after page reload

```ts
const existing = client.session.calls;
if (existing.length > 0) {
  const call = existing[0];
  // re-bind call.status$, call.remoteStream$, etc. to your UI
}
```

## **See**

* [`SessionState`](/docs/browser-sdk/v4/reference/interfaces/session-state) — full interface, including `calls$`, `incomingCalls$`, `authenticated$`.
* [`register`](/docs/browser-sdk/v4/reference/signalwire/register) — must be called before inbound calls route to this session.
* [Inbound Calls guide](/docs/browser-sdk/v4/guides/inbound-calls) — end-to-end accept/reject flow.