*** id: 5bf745a9-8589-4121-983c-47832903d647 title: tapAudio slug: /node/reference/voice/call/tap-audio description: tapAudio method for the Call class. max-toc-depth: 3 ---------------- [calltap-3]: /docs/server-sdk/v3/node/reference/voice/call-tap [types-4]: /docs/server-sdk/v3/node/reference/voice/types#tapdevice ### tapAudio * **tapAudio**(`params`): `Promise` - See [CallTap][calltap-3] for more details. Intercept call audio and stream it to the specified WebSocket endpoint. This is an experimental method. The destination must be a hosted WebSocket/RTP server, with an address that SignalWire can reach. A current limitation of this method is that the destination device does not receive any metadata regarding the origin of the stream. #### Parameters | Name | Type | Description | | :----------------- | :---------------------------------- | :---------------------------------------------------------------------------------------------------------- | | `params` | `Object` | - | | `params.device` | [`TapDevice`][types-4] | Destination device. Can be either WebSocket or RTP. | | `params.direction` | `"listen"` \| `"speak"` \| `"both"` | Direction to tap. Can be `"listen"` (what the caller hears), `"speak"` (what the caller says), or `"both"`. | #### Returns `Promise` - See [CallTap][calltap-3] for more details. #### Example ```js const tap = await call.tapAudio({ direction: "both", device: { type: "ws", uri: "wss://example.domain.com/endpoint", }, }); await tap.stop(); ```