> Fetch clean Markdown by appending `.md` to any page URL under https://signalwire.com/docs or requesting it with the HTTP header `Accept: text/markdown`. The root index at https://signalwire.com/docs/llms.txt lists the available documentation indexes.

# executeMethod

> Executes a Verto RPC method targeting a specific participant.

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

Executes a Verto RPC method targeting a specific participant.

Constructs call context (node\_id, call\_id, member\_id) and sends the RPC request. This is the transport behind every `Call` and `Participant` control method — reach for those first; use `executeMethod` only for verbs the SDK does not wrap.

## **Type Parameters**

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

## **Parameters**

**`target`** `string | MemberTarget` — required

A [`MemberTarget`](/docs/browser-sdk/v4/reference/participant/target) triple, or the **local** member's ID string for self-operations. Any other string is rejected: a bare member ID cannot carry a remote member's own call context, and the backend routes by that context. For a remote member, pass [`participant.target`](/docs/browser-sdk/v4/reference/participant/target).

The examples below require a value typed as `WebRTCCall`. The [`Call`](/docs/browser-sdk/v4/reference/interfaces/call) interface that [`dial()`](/docs/browser-sdk/v4/reference/signalwire/dial) returns declares `target` as `string` only, so a `MemberTarget` needs a narrowed type — prefer the [`Participant`](/docs/browser-sdk/v4/reference/participant) control methods, which build the target for you.

---

**`method`** `string` — required

Verto method name (e.g. `'call.mute'`, `'call.member.remove'`).

---

**`args`** `Record<string, unknown>` — required

Parameters for the RPC method.

---

## **Returns**

`Promise<T>`

The RPC response.

## **Throws**

* [`CallNotReadyError`](/docs/browser-sdk/v4/reference/errors/call-not-ready-error) — the call has no self member context yet.
* `InvalidParams` — a string `target` is not the local member's ID.
* `JSONRPCError` — the RPC call returned an error.

## **Examples**

### Mute a remote member

```ts
await call.executeMethod(participant.target, 'call.mute', { channels: ['audio'] });
```

### Remove a member from the call

```ts
await call.executeMethod(participant.target, 'call.member.remove', {});
```

## **See**

* [`execute`](/docs/browser-sdk/v4/reference/webrtc-call/execute) — lower-level raw JSON-RPC send.