# Meeting.rtms\_started webhook missing WebSocket URL / Stream ID

**URL:** <https://devforum.zoom.us/t/meeting-rtms-started-webhook-missing-websocket-url-stream-id/141905>\
**Category:** Authentication\
**Created:** [February 13, 2026, 9:04am UTC](https://devforum.zoom.us/t/meeting-rtms-started-webhook-missing-websocket-url-stream-id/141905 "2026-02-13T09:04:14Z")\
**Posts on this page:** 1\
**Showing post:** 2

<div class="post-metadata">

**Author:** ![amanda-recallai](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/amanda-recallai/32/44747_2.png) [@amanda-recallai](https://devforum.zoom.us/u/amanda-recallai)\
**Post date:** [February 16, 2026, 7:09pm UTC](https://devforum.zoom.us/t/meeting-rtms-started-webhook-missing-websocket-url-stream-id/141905/2 "2026-02-16T19:09:14Z")

</div>

The RTMS `meeting.rtms_started` webhook is expected to include the connection details (`server_urls`, `rtms_stream_id`, and `signature`) under the nested [`payload.payload` object](https://github.com/zoom/rtms/blob/main/README.md#python---basic-usage). If your handler is only looking at the outer wrapper, you can end up logging just `event` plus whatever fields you happen to surface

Also make sure you’re correctly handling Zoom’s webhook validation ping: when the request includes the [`x-zoom-webhook-validator` header you must echo `plainToken`](https://github.com/zoom/rtms/blob/main/README.md#nodejs---advanced-webhook-handling), and only treat real POST bodies as RTMS events

If parsing/validation is correct and the RTMS fields are genuinely absent, it usually points to account/user enablement: RTMS access can be toggled by Zoom (see a real example where support enabled a trial in the forum thread on [missing RTMS events/scopes](https://devforum.zoom.us/t/issue-with-rtms-missing-webhook-events-and-scopes-for-websocket-connection/140262/22))

---

_[View the full topic](https://devforum.zoom.us/t/meeting-rtms-started-webhook-missing-websocket-url-stream-id/141905)._
