# No Audio Interruption event

**URL:** <https://community.openai.com/t/no-audio-interruption-event/1370369>\
**Category:** Bugs\
**Tags:** realtime, api-realtime, agents-sdk\
**Created:** [December 28, 2025, 2:08pm UTC](https://community.openai.com/t/no-audio-interruption-event/1370369 "2025-12-28T14:08:35Z")\
**Posts on this page:** 2\
**Page:** 1

<div class="post-metadata">

**Author:** ![gregory\_buffard](https://sea2.discourse-cdn.com/openai1/user_avatar/community.openai.com/gregory_buffard/32/711785_2.png) [@gregory\_buffard](https://community.openai.com/u/gregory_buffard)\
**Post date:** [December 28, 2025, 2:08pm UTC](https://community.openai.com/t/no-audio-interruption-event/1370369/1 "2025-12-28T14:08:35Z")

</div>

Dear OpenAI community :

I’m facing an issue with OpenAI’s TypeScript Agents SDK, where when a `websocket` transport layer is configured, the `audio_interrupted` event never fires when it should.

**The issue is as simple as that, however so annoying as well.**  
Does anyone face this problem too, please? I so, did you manage to fix it?

---

<div class="post-metadata">

**Author:** ![OpenAI\_Support](https://sea2.discourse-cdn.com/openai1/user_avatar/community.openai.com/openai_support/32/561845_2.png) [@OpenAI\_Support](https://community.openai.com/u/OpenAI_Support)\
**Post date:** [January 28, 2026, 10:17am UTC](https://community.openai.com/t/no-audio-interruption-event/1370369/2 "2026-01-28T10:17:52Z")

</div>

Hey gregory\_buffard,

Yeah, this is expected behavior when using WebSocket transport, and you’re not doing anything wrong.

With the Realtime API, audio interruption works differently on WebSocket vs WebRTC. On WebRTC, the server manages audio playback, so it can automatically detect when playback is interrupted and emit higher-level interruption events. On WebSocket, the client owns audio playback, so the server doesn’t know what audio has actually been heard which means events like `audio_interrupted` may never fire.

Instead, the docs call out that `input_audio_buffer.speech_started` is the signal you should rely on when using WebSocket. When you receive that event, you’re expected to:

- stop playback locally,
- track how much audio was played,
- and send `conversation.item.truncate` with `audio_end_ms` to truncate the unplayed audio.

If you want interruption to be handled automatically (with server-side truncation and higher-level interruption semantics), you’ll need to use WebRTC transport instead.

Docs that explain this flow:

- Realtime interruptions & truncation (WebSocket vs WebRTC):
- [https://platform.openai.com/docs/guides/realtime#interrupting-model-output](https://platform.openai.com/docs/guides/realtime#interrupting-model-output)
- Event reference (`input_audio_buffer.speech_started`, `conversation.item.truncate`):
- [https://platform.openai.com/docs/api-reference/realtime/events](https://platform.openai.com/docs/api-reference/realtime/events)
