***

title: hold
slug: /reference/typescript/relay/call/hold
description: Put a call on hold.
max-toc-depth: 3
---------------------

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

[unhold]: /docs/server-sdks/reference/typescript/relay/call/unhold

[calling-call-hold]: /docs/server-sdks/reference/typescript/relay/call#events

[call-events]: /docs/server-sdks/reference/typescript/relay/call#events

Put the call on hold. The remote party hears hold music or silence while the
call is held.

<Info>
  Use [`unhold()`][unhold] to release the call from hold.
</Info>

<Info>
  This method emits [`calling.call.hold`][calling-call-hold] events. See [Call Events][call-events] for payload details.
</Info>

## **Parameters**

None.

## **Returns**

`Promise<Record<string, unknown>>` -- Server response confirming the hold operation.

## **Example**

```typescript {13}
import { RelayClient } from '@signalwire/sdk';

const client = new RelayClient({
  project: process.env.SIGNALWIRE_PROJECT_ID!,
  token: process.env.SIGNALWIRE_TOKEN!,
  contexts: ['default']
});

client.onCall(async (call) => {
  await call.answer();
  await call.play([{ type: 'tts', text: 'Please hold while I look that up.' }]);

  const result = await call.hold();
  console.log(`Hold started: ${JSON.stringify(result)}`);

  // Do some processing...
  await new Promise((resolve) => setTimeout(resolve, 5000));

  // Take the call off hold
  await call.unhold();
});

await client.run();
```