Help with basic curl use of API - Create a Meeting

I am trying to create a new meeting using the API. I have created my JWT API and tested with:

curl --request GET --url ‘https://api.zoom.us/v2/users?status=active&page_size=30&page_number=1’ --header ‘authorization: Bearer blahblahblah’ --header ‘content-type: application/json’
and I get the appropriate JSON back.

I am trying to create a meeting:

curl -X POST --url https://api.zoom.us/v2/users/userideawenthere/meetings --header ‘authorization: Bearer blah blah’ -H “accept:application/json” -d ‘{ “topic”: “test”, “type”: 1 }’

but i keep getting back {“code”:300,“message”:“Unsupported Content Type”}

Call Logs show:

I note there is nothing in the request params. I can get things to appear there if i start messing with the data sent and change my curl to -d ‘“topic”=“test5”’ -d ‘“type”=1’
(which is clearly not JSON and althought it makes it appear in the call log, still error 300.

Is it possible my API is not authorised to create meetings?
I’ve read through a lot of comments on this issue, and the topic and type seem to be the minimum required to test it…?

Hey @roryj, thanks for posting and using Zoom!

You are super close! When you set -d it means application/x-www-form-urlencoded, but you are trying to send your request body in JSON.

Use --data instead:

curl -X POST --url https://api.zoom.us/v2/users/userideawenthere/meetings --header 'authorization: Bearer blah blah' -H "accept:application/json" --data '{ "topic": "test", "type": 1 }'

Let me know if that works! :slight_smile:

Thanks,
Tommy

Hi tommy - just tried it…

curl -X POST --url https://api.zoom.us/v2/users/jw9j-nrpTs-qz6LRESw4sA/meetings --header 'authorization: Bearer eyblahbahM8' -H "accept:application/json" --data '{ "topic": "test", "type": 1 }'
still get…
{"code":300,"message":"Unsupported Content Type"}

Checked the App call logs…
Nothing in the request_params…

request_params: [
],
http_status: "415"

Could it be my user id IN the url that is wrong? - I’m using the one obtained from the initial response that worked… e.g…

curl --request GET --url 'https://api.zoom.us/v2/users?status=active&page_size=30&page_number=1' --header 'authorization: Bearer eyJ..etc..etc..n8' --header 'content-type: application/json'

{“page_count”:1,“page_numb…users”:[{“id”:“jw9j-nrpTs-qz6LRESw4sA”,"fir`

Hey @roryj,

It would not show up there, it would be in the request_body which in the photo you shared is “N/A”.

I just tried with a little different curl structure and it worked. Try this:

curl --header "Content-Type: application/json" --header "Authorization: Bearer TOKEN" --request POST --data '{"topic":"xyz","type":1}'  https://api.zoom.us/v2/users/me/meetings

Thanks,
Tommy

SUCCESS! Thank you!

So looking through this, I had this wrong…
--header "accept:application/json"
should have been
--header "Content-Type: application/json"

Also - instead of
https://api.zoom.us/v2/users/jw9j-nrpTs-qz6LRESw4sA/meetings
I could just use
https://api.zoom.us/v2/users/me/meetings
(both work - but one is obiously a lot less effort!)

1 Like

Hey @roryj, happy to hear it works! :slight_smile:

Correct! Using the me keyword means the user who owns the access_token / JWT Token is used so you don’t have to specify their userID. However in your use case, if you are creating a meeting for another user on your account, you’d need to specify their user id.

Thanks,
Tommy