# Changing meeting hosts

**URL:** <https://devforum.zoom.us/t/changing-meeting-hosts/88501>\
**Category:** Meetings\
**Created:** [May 16, 2023, 9:52pm UTC](https://devforum.zoom.us/t/changing-meeting-hosts/88501 "2023-05-16T21:52:15Z")\
**Posts on this page:** 7\
**Page:** 1

<div class="post-metadata">

**Author:** ![if\_s37](https://avatars.discourse-cdn.com/v4/letter/i/e56c9b/32.png) [@if\_s37](https://devforum.zoom.us/u/if_s37)\
**Post date:** [May 16, 2023, 9:52pm UTC](https://devforum.zoom.us/t/changing-meeting-hosts/88501/1 "2023-05-16T21:52:15Z")

</div>

**API Endpoint(s) and/or Zoom API Event(s)**  
PATCH /meetings/{meetingId}

**Description**  
I’m developing an application that interacts with Zoom via the published REST APIs. I’ve created a Server to Server OAuth app to generate a client ID and secret with which I’m able to authenticate. The app has the following scopes:

user:write:admin user:read:admin meeting:read:admin group:write:admin group:read:admin meeting:write:admin

I’m able to create meetings with POST /users/{userId}/meetings and change the configured alternative hosts with PATCH /meetings/{meetingId}.

However, I am NOT able to change the host of a meeting via PATCH /meetings/{meetingId}. Here is a sample request and response:

```auto
PATCH https:// api.zoom.us /v2/meetings/123456789
{ "schedule_for": "new_host @ email.com" }

Status: 400 Bad Request
{
"code": 3000,
"message": "You cannot schedule a meeting for new_host @ email.com"
}

```

The user that created the Server to Server OAuth app is api\_user @ [email.com](http://email.com). I have added this user as an assistant to the original host of the meeting (first\_host @ [email.com](http://email.com)) AND to the new host ([now\_host@email.com](mailto:now_host@email.com)). All 3 users are licensed users.

PS: I can create a meeting for new\_host @ [email.com](http://email.com) using POST /users/new\_host @ [email.com/meetings](http://email.com/meetings) but any attempt to change meeting hosts fails.

PPS: All the emails have a space around the @ like “new\_host @ [email.com](http://email.com)” because as a new user I couldn’t post more than 2 links, but it should really be “[new\_host@email.com](mailto:new_host@email.com)”. The URL in sample request also has spaces for the same reason.

**Error?**  
400 Bad Request, code 3000, “You cannot schedule a meeting for new\_host @ [email.com](http://email.com)”

---

<div class="post-metadata">

**Author:** ![elisa.zoom](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/elisa.zoom/32/47836_2.png) [@elisa.zoom](https://devforum.zoom.us/u/elisa.zoom)\
**Post date:** [May 18, 2023, 3:10pm UTC](https://devforum.zoom.us/t/changing-meeting-hosts/88501/2 "2023-05-18T15:10:42Z")

</div>

Hi @if_s37  
Thanks for reaching out to the Zoom Developer Forum and welcome to our community, I am happy to help here!

That error that you are getting could be due to the issue that you have not enabled scheduling privileges to the user you are trying to work with, please take a look at this couple of support articles:

> **[Using scheduling privilege](https://support.zoom.us/hc/en-us/articles/201362803)**
>
> Scheduling privilege is designed for a user or an executive admin to:
> 
> Assign or delegate a user or multiple users in your account to schedule meetings on your behalf. 
> Schedule meetings on behalf ...

> **[Create a user and assign scheduling privilege programmatically](https://devsupport.zoom.us/hc/en-us/articles/4417084425613-Create-a-user-and-assign-scheduling-privilege-programmatically)**
>
> Overview : 
> While users will have to grant scheduling privilege through Zoom's Web portal, a user can be programmatically added as the meeting assistant with our Add assistant API.  Scheduling priv...

Let me know if this helps!  
Elisa

---

<div class="post-metadata">

**Author:** ![if\_s37](https://avatars.discourse-cdn.com/v4/letter/i/e56c9b/32.png) [@if\_s37](https://devforum.zoom.us/u/if_s37)\
**Post date:** [May 18, 2023, 3:25pm UTC](https://devforum.zoom.us/t/changing-meeting-hosts/88501/3 "2023-05-18T15:25:20Z")

</div>

Hi Elisa, thanks for responding. As I stated in my original post, the user making the API call to PATCH /meetings/{meetingId} is already registered as an assistant to both the original meeting host and the user that I am trying to make the new host.

Furthermore, the user making the API request is also able to make meetings for both of those users through POST /users/{userId}/meetings.

---

<div class="post-metadata">

**Author:** ![elisa.zoom](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/elisa.zoom/32/47836_2.png) [@elisa.zoom](https://devforum.zoom.us/u/elisa.zoom)\
**Post date:** [May 18, 2023, 3:29pm UTC](https://devforum.zoom.us/t/changing-meeting-hosts/88501/4 "2023-05-18T15:29:23Z")

</div>

Make sure that both users have scheduling privileges and that way you will be able to schedule meetings for other users

---

<div class="post-metadata">

**Author:** ![if\_s37](https://avatars.discourse-cdn.com/v4/letter/i/e56c9b/32.png) [@if\_s37](https://devforum.zoom.us/u/if_s37)\
**Post date:** [May 18, 2023, 6:39pm UTC](https://devforum.zoom.us/t/changing-meeting-hosts/88501/5 "2023-05-18T18:39:47Z")

</div>

The user making the API call already does have scheduling privileges.

When I check the registered assistants for both the current host and the new host using:  
GET /user/{userId}/assistants  
the API user is returned.

When I check which users the API user can schedule for using:  
GET /users/me/schedulers  
both the current host and the new host are listed.

And yet, when I call PATCH /meetings/{meetingId}, I get “You cannot schedule a meeting for new host”.

---

<div class="post-metadata">

**Author:** ![if\_s37](https://avatars.discourse-cdn.com/v4/letter/i/e56c9b/32.png) [@if\_s37](https://devforum.zoom.us/u/if_s37)\
**Post date:** [May 19, 2023, 2:03pm UTC](https://devforum.zoom.us/t/changing-meeting-hosts/88501/6 "2023-05-19T14:03:10Z")

</div>

I was able to successfully change meeting hosts, but with a major caveat.

The user specified in the path of the original `POST /users/{userId}/meetings` request **must be the one registered as an assistant to the new meeting host**.

It doesn’t matter who is making the API call, or who the “schedule\_for” value is when the meeting was originally created. **The only thing that matters is the `{userId}` in the path.**

In my case, I was creating a meeting via `POST /users/{user who is the host}/meetings`. But then `{user who is the host}` wasn’t registered as an assistant to the new meeting host, so my attempts to change the host failed, even though the user making the call to `PATCH /meetings/{meetingId}` WAS registered as an assistant.

This is unintuitive to say the least - please update the documentation to state this behavior explicitly.

For future readers, this is what I’m doing now, which works:

As the API user, which is registered as an assistant to all users:  
`POST /users/me/meetings { "schedule_for": "desired_meeting_host_email" }`  
`PATCH /meetings/{meetingId} { "schedule_for": "new_meeting_host_email" }`

---

<div class="post-metadata">

**Author:** ![elisa.zoom](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/elisa.zoom/32/47836_2.png) [@elisa.zoom](https://devforum.zoom.us/u/elisa.zoom)\
**Post date:** [May 22, 2023, 1:14pm UTC](https://devforum.zoom.us/t/changing-meeting-hosts/88501/7 "2023-05-22T13:14:17Z")

</div>

Thanks for sharing your findings with the community @if_s37  
I am happy to hear that you were able to troubleshoot this
