# RTMS behavior differences between App Auto-Start vs manually starting RTMS via API

**URL:** <https://devforum.zoom.us/t/rtms-behavior-differences-between-app-auto-start-vs-manually-starting-rtms-via-api/140368>\
**Category:** Realtime Media Streams\
**Tags:** webhooks, api\
**Created:** [January 9, 2026, 10:22pm UTC](https://devforum.zoom.us/t/rtms-behavior-differences-between-app-auto-start-vs-manually-starting-rtms-via-api/140368 "2026-01-09T22:22:47Z")\
**Posts on this page:** 4\
**Page:** 1

<div class="post-metadata">

**Author:** ![Bill3](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/bill3/32/73832_2.png) [@Bill3](https://devforum.zoom.us/u/Bill3)\
**Post date:** [January 9, 2026, 10:22pm UTC](https://devforum.zoom.us/t/rtms-behavior-differences-between-app-auto-start-vs-manually-starting-rtms-via-api/140368/1 "2026-01-09T22:22:47Z")

</div>

Issue: Manually starting RTMS only works when the Host is the first to join (an instance of) the Meeting. If a Participant (non-Host) joins the meeting first, RTMS doesn’t start.

**Details** :

- We have a User Manged General App (RTMS app) set up to send Meeting and RTMS events to a webhook.
- The webhook consumer can be configured to either manually start RTMS events or to wait for RTMS events.
- RTMS is manually started through a Server-to-Server App (StoS app) that requests an Access Token and uses it to start RTMS (for the RTMS app) via API call.
- The StoS app has no Events, and has the following Scopes:  
meeting:read:meeting:admin  
meeting:update:participant\_rtms\_app\_status:admin  
**Note: I couldn’t find the non-admin versions of these scopes**

**Auto-Start RTMS Test:**

- We add the Zoom User to the RTMS app.
- We add the RTMS app to the Zoom Users auto-start list (Settings \>\> Zoom Apps \>\> Meetings \>\> Auto-start apps that access shared realtime meeting content).
- We configure our webhook consumer to wait for RTMS events.
- We schedule a meeting with the Zoom User as Host.
- When anyone (Host or non-Zoom User) joins the meeting, our webhook consumer receives a meeting.started event, followed by a meeting.rtms\_started event, and all is good.

**Manual RTMS Test:**

- We add the Zoom User to the RTMS app.
- We configure our webhook consumer to manually start RTMS.
- We schedule a meeting with the Zoom User as Host.
- When anyone joins the meeting, our webhook consumer receives a meeting.started event.
- Our webhook consumer requests an Access Token, through the StoS app (Basic Authentication Header). POST [https://zoom.us/oauth/token?grant\_type=account\_credentials&account\_id=\*\*\*\*\*\](https://zoom.us/oauth/token?grant_type=account_credentials&account_id=%5C*%5C*%5C*%5C*%5C*%5C)\*
- Our webhook consumer uses the Bearer token to call the Zoom API v2 (action = “start” body…) PATCH [https://api.zoom.us/v2/live\_meetings/](https://api.zoom.us/v2/live_meetings/)"+ meetingid + "/rtms\_app/status
- If the Host joins the meeting first, the webhook consumer recieves the meeting.rtms\_started event.
- If a Participant (!= Host, != Zoom User) joins first, RTMS doesn’t start.

Everything is working when we use auto-start, but I suspect that there may be a fix for our manual RTMS start issue.

I’d appreciate any thoughts you might be able to offer.

---

<div class="post-metadata">

**Author:** ![Bill3](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/bill3/32/73832_2.png) [@Bill3](https://devforum.zoom.us/u/Bill3)\
**Post date:** [January 12, 2026, 7:07pm UTC](https://devforum.zoom.us/t/rtms-behavior-differences-between-app-auto-start-vs-manually-starting-rtms-via-api/140368/2 "2026-01-12T19:07:59Z")

</div>

Follow-up:

The body of the API call to start RTMS is: var body = new { action = “start”, settings = new { participant\_user\_id = **[payload.object.host\_id from meeting.started Event]**, client\_id = **[RTMS app Client ID]** } };

When making the call to manually start RTMS, the **host\_id** value is the same (in meeting.started Event), regardless of who joins first, the Host or a Participant.

The API call successfully starts RTMS, when the Host joins first.

The API call silently fails to start RTMS, when a Participant joins first.

The token has this scope: “scope”:“meeting:read:meeting:admin meeting:update:participant\_rtms\_app\_status:admin”

I’m noting that the token content lists “api\_url”:“[https://api-us.zoom.us](https://api-us.zoom.us)”.

Should I be using that instead of [https://api.zoom.us/v2/](https://api.zoom.us/v2/)?

---

<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:** [January 14, 2026, 1:37am UTC](https://devforum.zoom.us/t/rtms-behavior-differences-between-app-auto-start-vs-manually-starting-rtms-via-api/140368/3 "2026-01-14T01:37:05Z")

</div>

Hi @Bill3, This is usually a timing/consent issue: Zoom notes that [“If there’s no one in the meeting to approve the app, the RTMS session cannot start”](https://devforum.zoom.us/t/can-i-receive-streams-without-joining-the-meeting-host-participant-and-permission-scenarios-explained/131485), so if your webhook fires and you call `start` before the host (or an authorized approver) is actually in the meeting, the request won’t result in `meeting.rtms_started`.

A practical fix is to delay or retry the PATCH until you see the host join (and treat early joins as “not ready”), using signals like [the `meeting.participant_jbh_waiting` event (“Joined Before Host”)](https://devforum.zoom.us/t/webhook-participant-notifications-and-join-before-host/13153) or `meeting.participant_joined`, and log the PATCH HTTP status/body so you can catch non-2xx responses you might be ignoring.

On the base URL changing it shouldn’t affect the host-first vs participant-first behavior.

---

<div class="post-metadata">

**Author:** ![Bill3](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/bill3/32/73832_2.png) [@Bill3](https://devforum.zoom.us/u/Bill3)\
**Post date:** [March 3, 2026, 9:16pm UTC](https://devforum.zoom.us/t/rtms-behavior-differences-between-app-auto-start-vs-manually-starting-rtms-via-api/140368/4 "2026-03-03T21:16:51Z")

</div>

Thank you Zoom Developers!

I saw at the end of January that you had changed the RTMS behavior (to allow it to start before the Host joined the meeting).

We have reverted to manually starting RTMS for our Zoom App (over adding our Zoom app to everyone’s auto-start list).  
Whoot!

Thanks!
