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

# Call

> Public interface for an active WebRTC call.

Public interface for an active WebRTC call.

Provides access to media streams, participants, layout, signaling events,
and control actions (hangup, mute, transfer, etc.).

## **Extends**

* [`CallState`](/docs/browser-sdk/v4/reference/interfaces/call-state)

## **Properties**

Address associated with the remote party of the call. See [`CallAddress`](/docs/browser-sdk/v4/reference/interfaces/call-address).

Observable of the address associated with this call. See [`CallAddress`](/docs/browser-sdk/v4/reference/interfaces/call-address).

Observable that emits `true` while the call is bandwidth-constrained.

Set of capabilities currently granted to the local participant on this call. See [`Capability`](/docs/browser-sdk/v4/reference/type-aliases/capability).

Observable of the local participant's current capability set on this call. See [`Capability`](/docs/browser-sdk/v4/reference/type-aliases/capability).

Whether this call is `inbound` or `outbound`. See [`CallDirection`](/docs/browser-sdk/v4/reference/type-aliases/call-direction).

Observable stream of errors raised on this call. See [`CallError`](/docs/browser-sdk/v4/reference/interfaces/call-error).

URI of the calling party.

Display name of the calling party.

Whether the connection currently meets quality thresholds.

Observable of the call's current network-health state.

Name of the currently active video layout.

Observable of the currently active layout name.

Position and state of each layer in the active layout. See [`LayoutLayer`](/docs/browser-sdk/v4/reference/interfaces/layout-layer).

Observable of the active layout's layer positions. See [`LayoutLayer`](/docs/browser-sdk/v4/reference/interfaces/layout-layer).

List of layout names available on this call.

Observable of the list of available layout names.

Sync getter — returns null before the stream is created. See [`MediaStream`](https://developer.mozilla.org/en-US/docs/Web/API/MediaStream).

Observable that emits only non-null MediaStreams (waits until the stream exists). See [`MediaStream`](https://developer.mozilla.org/en-US/docs/Web/API/MediaStream).

Send/receive direction for each media track. See [`MediaDirections`](/docs/browser-sdk/v4/reference/interfaces/media-directions).

Observable of the per-track media direction state. See [`MediaDirections`](/docs/browser-sdk/v4/reference/interfaces/media-directions).

Observable that emits when media parameters are renegotiated. See [`MediaParamsEvent`](/docs/browser-sdk/v4/reference/interfaces/media-params-event).

Recent network issues detected during the call. See [`CallNetworkIssue`](/docs/browser-sdk/v4/reference/interfaces/call-network-issue).

Observable stream of detected network issues. See [`CallNetworkIssue`](/docs/browser-sdk/v4/reference/interfaces/call-network-issue).

Recent network-metric samples for the call. See [`CallNetworkMetrics`](/docs/browser-sdk/v4/reference/interfaces/call-network-metrics).

Observable of periodic network-metric samples. See [`CallNetworkMetrics`](/docs/browser-sdk/v4/reference/interfaces/call-network-metrics).

Observable of the categorical call-quality level. See [`QualityLevel`](/docs/browser-sdk/v4/reference/type-aliases/quality-level).

Observable of the numeric call-quality score (0–5).

Observable stream of call-recovery events. See [`RecoveryEvent`](/docs/browser-sdk/v4/reference/interfaces/recovery-event).

Observable of the current recovery state. See [`RecoveryState`](/docs/browser-sdk/v4/reference/type-aliases/recovery-state).

Remote `MediaStream` for the call, or `null` if not yet available. See [`MediaStream`](https://developer.mozilla.org/en-US/docs/Web/API/MediaStream).

Observable that emits only non-null MediaStreams (waits until the stream exists). See [`MediaStream`](https://developer.mozilla.org/en-US/docs/Web/API/MediaStream).

Underlying `RTCPeerConnection`, or `undefined` if not yet established.

Local participant on the call, or `null` before join. See [`CallSelfParticipant`](/docs/browser-sdk/v4/reference/interfaces/call-self-participant).

Observable of the local participant, or `null` before join. See [`CallSelfParticipant`](/docs/browser-sdk/v4/reference/interfaces/call-self-participant).

Observable stream of raw signaling events.

URI of the called party.

Display name of the called party.

Map of arbitrary user-defined variables associated with the call.

Observable of the call's user-variables bag.

Unique identifier for this call.

Whether the call is locked to new participants.

Observable of the call's `locked` state.

Arbitrary metadata bag associated with the call or member.

Observable of the call-level metadata bag.

Current set of participants in the call. See [`CallParticipant`](/docs/browser-sdk/v4/reference/interfaces/call-participant).

Observable of the current participant list. See [`CallParticipant`](/docs/browser-sdk/v4/reference/interfaces/call-participant).

Whether raise-hand priority mode is active.

Observable of the raise-hand priority mode state.

Whether a server-side recording is currently in progress.

Observable of the current recording state.

Lifecycle status of the call. See [`CallStatus`](/docs/browser-sdk/v4/reference/type-aliases/call-status).

Observable of the call's lifecycle status. See [`CallStatus`](/docs/browser-sdk/v4/reference/type-aliases/call-status).

Whether a server-side stream is currently active.

Observable of the current streaming state.

## **Methods**

### answer()

```ts
answer(options?): void
```

#### Parameters

Per-call options for this operation (media constraints, RPC timeouts, or transfer target depending on context). See [`MediaOptions`](/docs/browser-sdk/v4/reference/interfaces/media-options).

#### Returns

`void`

***

### execute()

```ts
execute<T>(request, options?): Promise<T>
```

#### Type Parameters

| Type Parameter                                                                                  | Default type                                                                      |
| ----------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- |
| `T` *extends* [`JSONRPCResponse`](/docs/browser-sdk/v4/reference/type-aliases/jsonrpc-response) | [`JSONRPCResponse`](/docs/browser-sdk/v4/reference/type-aliases/jsonrpc-response) |

#### Parameters

Outgoing JSON-RPC request to send. See [`JSONRPCRequest`](/docs/browser-sdk/v4/reference/interfaces/jsonrpc-request).

Per-call options for this operation (media constraints, RPC timeouts, or transfer target depending on context). See [`PendingRPCOptions`](/docs/browser-sdk/v4/reference/interfaces/pending-rpc-options).

#### Returns

`Promise<T>`

***

### executeMethod()

```ts
executeMethod<T>(target, method, args): Promise<T>
```

#### Type Parameters

| Type Parameter                                                                                  | Default type                                                                      |
| ----------------------------------------------------------------------------------------------- | --------------------------------------------------------------------------------- |
| `T` *extends* [`JSONRPCResponse`](/docs/browser-sdk/v4/reference/type-aliases/jsonrpc-response) | [`JSONRPCResponse`](/docs/browser-sdk/v4/reference/type-aliases/jsonrpc-response) |

#### Parameters

Target identifier (member ID or destination URI) for the operation.

RPC method name to execute on the server.

Method-specific arguments to pass with the RPC.

#### Returns

`Promise<T>`

***

### hangup()

```ts
hangup(): Promise<void>
```

#### Returns

`Promise<void>`

***

### reject()

```ts
reject(): void
```

#### Returns

`void`

***

### requestIceRestart()

```ts
requestIceRestart(): Promise<void>
```

#### Returns

`Promise<void>`

***

### requestKeyframe()

```ts
requestKeyframe(): void
```

#### Returns

`void`

***

### sendDigits()

```ts
sendDigits(digits): Promise<void>
```

#### Parameters

DTMF digit string to send.

#### Returns

`Promise<void>`

***

### setLayout()

```ts
setLayout(layout, positions): Promise<void>
```

#### Parameters

Name of the currently active video layout.

Map of member IDs to layout positions. See [`VideoPosition`](/docs/browser-sdk/v4/reference/type-aliases/video-position).

#### Returns

`Promise<void>`

***

### setMeta()

```ts
setMeta(meta): Promise<void>
```

#### Parameters

Arbitrary metadata bag associated with the call or member.

#### Returns

`Promise<void>`

#### Inherited from

[`CallState`](/docs/browser-sdk/v4/reference/interfaces/call-state).[`setMeta`](/docs/browser-sdk/v4/reference/interfaces/call-state#setmeta)

***

### startRecording()

```ts
startRecording(): Promise<void>
```

#### Returns

`Promise<void>`

***

### startStreaming()

```ts
startStreaming(): Promise<void>
```

#### Returns

`Promise<void>`

***

### subscribe()

```ts
subscribe(eventType): Observable<Record<string, unknown>>
```

#### Parameters

Name of the event to subscribe to.

#### Returns

`Observable<Record<string, unknown>>`

***

### toggleHold()

```ts
toggleHold(): Promise<void>
```

#### Returns

`Promise<void>`

***

### toggleIncomingAudio()

```ts
toggleIncomingAudio(): Promise<void>
```

#### Returns

`Promise<void>`

***

### toggleIncomingVideo()

```ts
toggleIncomingVideo(): Promise<void>
```

#### Returns

`Promise<void>`

***

### toggleLock()

```ts
toggleLock(): Promise<void>
```

#### Returns

`Promise<void>`

***

### transfer()

```ts
transfer(options): Promise<void>
```

#### Parameters

Per-call options for this operation (media constraints, RPC timeouts, or transfer target depending on context). See [`TransferOptions`](/docs/browser-sdk/v4/reference/interfaces/transfer-options).

#### Returns

`Promise<void>`

***

### updateMeta()

```ts
updateMeta(meta): Promise<void>
```

#### Parameters

Arbitrary metadata bag associated with the call or member.

#### Returns

`Promise<void>`

#### Inherited from

[`CallState`](/docs/browser-sdk/v4/reference/interfaces/call-state).[`updateMeta`](/docs/browser-sdk/v4/reference/interfaces/call-state#updatemeta)