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

# execute

> Executes a raw JSON-RPC request on the client session.

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

Executes a raw JSON-RPC request on the client session.

Lower-level than [executeMethod](#executemethod) — allows full control over the RPC request structure.

## **Type Parameters**

| Type Parameter                  | Default type      |
| ------------------------------- | ----------------- |
| `T` *extends* `JSONRPCResponse` | `JSONRPCResponse` |

## **Parameters**

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

Optional RPC execution options (timeout, etc.). See [`PendingRPCOptions`](/docs/browser-sdk/v4/reference/interfaces/pending-rpc-options).

## **Returns**

`Promise<T>`

The RPC response.

## **Throws**

If the RPC call returns an error response.

## **Examples**

### Send a raw JSON-RPC request

```ts
const response = await call.execute({
  jsonrpc: '2.0',
  id: crypto.randomUUID(),
  method: 'call.mute',
  params: { call_id: call.id },
});
```

## **See**

* [`executeMethod`](/docs/browser-sdk/v4/reference/webrtc-call/execute-method) — higher-level wrapper for member-targeted Verto methods.