> 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. # PlayAction > Action handle for an active audio playback operation. [call-play]: /docs/server-sdks/reference/typescript/relay/call/play [base-action-interface]: /docs/server-sdks/reference/typescript/relay/actions [stop]: /docs/server-sdks/reference/typescript/relay/actions/play-action/stop [pause]: /docs/server-sdks/reference/typescript/relay/actions/play-action/pause [resume]: /docs/server-sdks/reference/typescript/relay/actions/play-action/resume [volume]: /docs/server-sdks/reference/typescript/relay/actions/play-action/volume Returned from [`call.play()`][call-play]. Tracks an active audio playback operation. Terminal states: `finished`, `error`. Inherits all properties and methods from the [base Action interface][base-action-interface] (`controlId`, `isDone`, `completed`, `result`, `wait()`). ## **Properties** No additional properties beyond the [base Action interface][base-action-interface]. ## **Methods** #### [stop](/docs/server-sdks/reference/typescript/relay/actions/play-action/stop) Stop audio playback immediately. #### [pause](/docs/server-sdks/reference/typescript/relay/actions/play-action/pause) Pause audio playback. #### [resume](/docs/server-sdks/reference/typescript/relay/actions/play-action/resume) Resume paused audio playback. #### [volume](/docs/server-sdks/reference/typescript/relay/actions/play-action/volume) Adjust audio playback volume. ## **Example** ```typescript {11} import { RelayClient } from '@signalwire/sdk'; const client = new RelayClient({ project: process.env.SIGNALWIRE_PROJECT_ID!, token: process.env.SIGNALWIRE_API_TOKEN!, contexts: ['default'] }); client.onCall(async (call) => { await call.answer(); const action = await call.play( [{ type: 'audio', url: 'https://example.com/hold-music.mp3' }], { volume: -5.0, loop: 0 }, ); // Pause and resume playback await action.pause(); await action.resume(); // Adjust volume await action.volume(10.0); // Stop playback await action.stop(); }); await client.run(); ``` > Action handle for an active audio playback operation. ## Docs - [pause](https://signalwire.com/docs/server-sdks/reference/typescript/relay/actions/play-action/pause.md): Pause audio playback. - [resume](https://signalwire.com/docs/server-sdks/reference/typescript/relay/actions/play-action/resume.md): Resume paused audio playback. - [stop](https://signalwire.com/docs/server-sdks/reference/typescript/relay/actions/play-action/stop.md): Stop audio playback immediately. - [volume](https://signalwire.com/docs/server-sdks/reference/typescript/relay/actions/play-action/volume.md): Adjust audio playback volume.