Unable to create zoom meeting from API even though I have scope

Description
I authorized user with these scopes:
scope: ‘meeting:read meeting:write user:read user:write user_profile webinar:write’

However when I use this token to create meeting request. I get this in response:
{
“code”: 4700,
“message”: “Invalid access token, does not contain scopes: [zms:meeting:write, meeting:write:admin]”
}

Error
The full error message or issue you are running into.

Which App Type (OAuth / Chatbot / JWT / Webhook)?
OAuth

Which Endpoint/s?
Knowing the API endpoint/s can help us to identify your issue faster. Please link the ones you need help/have a question with.

How To Reproduce (If applicable)
Steps to reproduce the behavior:

  1. Request URL
    https://api.zoom.us/v2/users/cL4rPKFPTF6dHZMWQRHOMA/meetings

Headers
{
Authorization : “Bearer …”,
“Content-Type”: “application/json”
}
Body

{
“topic”: “Corona testing”,
“duration”: 60,
“settings”: {
“mute_upon_entry”: true,
“join_before_host”: true
},
“password”: “test-123”
}

  1. See error
    {"code":4700,"message":"Invalid access token, does not contain scopes: [zms:meeting:write, meeting:write:admin]"}

Additional context
This is the curl

curl --location --request POST 'https://api.zoom.us/v2/users/cL4rPKFPTF6dHZMWQRHOMA/meetings' \
--header 'Authorization: Bearer eyJhbGciOiJIUzUxMiIsInYiOiIyLjAiLCJraWQiOiI5Mjk5NzU3Ni1mMjE0LTRhMjItOWQ2Yi1mZjcwYmU4YjMzZjEifQ.eyJ2ZXIiOiI2IiwiY2xpZW50SWQiOiJ4WnB2SHROSlNIeUFLYW1GeGp3IiwiY29kZSI6IkxFcVZCSkpYNG9fY0w0clBLRlBURjZkSFpNV1FSSE9NQSIsImlzcyI6InVybjp6b29tOmNvbm5lY3Q6Y2xpZW50aWQ6eFpwdkh0TkpTSHlBS2FtRnhqdyIsImF1dGhlbnRpY2F0aW9uSWQiOiIwOGE4MGQ0MDk1NWZmYWQzMmQ5Mzk2MDhhNjI2ZmE5ZSIsInVzZXJJZCI6ImNMNHJQS0ZQVEY2ZEhaTVdRUkhPTUEiLCJncm91cE51bWJlciI6MCwiYXVkIjoiaHR0cHM6Ly9vYXV0aC56b29tLnVzIiwiYWNjb3VudElkIjoiSHNWVWlxbldSdE9XenRvYlNUekdqdyIsIm5iZiI6MTU4NTE1MzgzMywiZXhwIjoxNTg1MTU3NDMzLCJ0b2tlblR5cGUiOiJhY2Nlc3NfdG9rZW4iLCJpYXQiOjE1ODUxNTM4MzMsImp0aSI6IjZiNGI0MDhiLTBjOGQtNGZlMS1hYzA2LWZlZGYzNWFhZDM0MyIsInRvbGVyYW5jZUlkIjozfQ.dZrEa2f7bMUc97xR2eHCy7OfVbpl9rYq89LvdTLcZsGlIyKTuG7_vAsmAUOgKQ0qN67Y_PoGgoSCH8JB-5XJWA' \
--header 'Content-Type: application/json' \
--header 'Cookie: _zm_page_auth=aw1_c_-E8nX9f9SSam5oeHPBRkdQ; _zm_ssid=aw1_c_IX5EP4P3Ttioirw8vEnh3g; _zm_ctaid=fQiy5sPXS_CfYwFZIJd-JA.1585150301073.868395c6d97c80c2c4de4a874a049520; _zm_chtaid=653; _zm_currency=USD; _zm_mtk_guid=7311d4558c6d4eaab96318b3330ed72c; cred=0C89224EB23F429A205D64166F841FDA' \
--data-raw '{
   "topic": "Corona testing",
   "duration": 60,
   "settings": {
      "mute_upon_entry": true,
      "join_before_host": true
   },
   "password": "test-123"
}'

Hey @muhammad.faizan.cs, thanks for posting and using Zoom!

Please try replacing the userID in your request with me.

For example:

Request URL
https://api.zoom.us/v2/users/me/meetings

Thanks,
Tommy

@tommy, thanks for this. I’ve seen the response to switch from {userId} to me several times today in the forum. Is there a place in the docs that explains when to use me vs {userId}?

1 Like

Hey @ncsquared, thanks for posting and using Zoom!

We need to do a better job of explaining this on our docs. Here is the current page that explains this:

https://marketplace.zoom.us/docs/guides/authorization/oauth/oauth-with-zoom#me-context

Thanks,
Tommy

@tommy, FWIW, the APIs dont seem to work for OAuth in any other way but the me context.

If I am not mistaken, all the embedded postman tests in the docs fail for OAuth apps because of this. Attaching one such example, where you can see that the URL for the POST is hardcoded, and an OAuth access token won’t allow for the call to work. At least, I haven’t managed to make it happen, so maybe I’m missing something else.

Hey @ncsquared,

For User Level OAuth apps you will need to use the me context.

For Account Level OAuth apps you can use the user ids.

Thanks,
Tommy

now how do I patch the meeting? I want to be able to update it.

Hey @muhammad.faizan.cs,

You can update a meeting via the Update Meeting endpoint.

Thanks,
Tommy

Update meeting is not supported under user level managed app

Hey @muhammad.faizan.cs,

It should work with a User Level OAuth app.

Are you seeing errors when making the update request?

Thanks,
Tommy

Yes, its throwing this error, with 401 HTTP Code

 { code: 124, error: 'invalid access token' }

Hey @muhammad.faizan.cs,

Are you passing in an active access_token? Please share your request details so I can help debug.

Thanks,
Tommy

Yes I am, I think its out of scope, because in the ME api its only allowed to make POST and GET call for meeting. so Patch is not included. correct me if I am wrong

Hey @muhammad.faizan.cs,

Just tested and it worked. I don’t think you are using the correct endpoint URL.

PATCH https://api.zoom.us/v2/meetings/{meetingId}

There is no me context or userID passed in ^ only meetingID.

Please share your request URL.

Thanks,
Tommy

I was using ‘/me’ :frowning: its so confusing

1 Like

Hey @muhammad.faizan.cs,

Yes for the PATCH Meeting endpoint, use the meetingID so it knows which meeting to update. :slight_smile:

Thanks,
Tommy