Can't start/join a meeting with API (403 response and an HTML with 'You are being rate limited, try again later')

At the bottom is my code.
I do manage to create the meeting.
When i try to join: requests.get(zoom_join_meeting_url) , I get error 403.

--------------------------------- Error page HTML (i deleted few lines so it can get into char limitation of the post) --------------------------------------

b’\n\n\n\nYou are being rate limited, try again later\n\n\n\n

\n \n <img style=“width: 90px; height: 20px;position: relative; top: 50%; right: -28px;transform: translateY(-50%);”



 <form id="challenge-form"
						      class="challenge-form"
						      action="/j/79634324546?pwd=UFTmTvrflvnc7joPXANY3Rx1gSnDGW.1?role=1&amp;tk=eyJhbGciOiJIUzI1NiJ9.eyJhdWQiOm51bGwsImlzcyI6InptZmhTX0NIU2N5Yno3RWFoa1gtY0EiLCJleHAiOjE2Nzg2MDQ1MzAsImlhdCI6MTY3Nzk5OTczMH0.UvTEUkYMufiW6xv5BHi-S1bIsDd4eRS4uEcpYa8_YJ4&amp;__cf_chl_f_tk=YcwdIDwadUyV8IiQ8jB6Z_TWnglAbA7tV2nonNlJXOY-1677999766-0-gaNycGzNCxA"
						      method="POST"
						      enctype="application/x-www-form-urlencoded">\n    <div id="cf-please-wait">\n        <div id="spinner">\n            <div id="cf-bubbles">\n                <div class="bubbles"/>\n                <div class="bubbles"/>\n                <div class="bubbles"/>\n            </div>\n        </div>\n        <p id="cf-spinner-please-wait">Please stand by, while we are checking your browser...</p>\n        <p id="cf-spinner-redirecting"
								   style="display:none">Redirecting...</p>\n    </div>\n    <input type="hidden"
							       name="md"
							       value="mZCtbWP7MGB9GXgwJhCMHCgwCgXsBEgngGU5FYUGhY0-1677999766-0-AXO-lRb0JzQEbUBLRf8ikaB9FcG-_VVV6VZR8MpLIKfHtXN5dZcV9LM-2Oqwo9eyQlNI-OUxc7-B6SpXISn_yU-bBO41u8wvWUjpPfWHpvyg3LiFQoZZa02JGNuI7HPgYFALAZ1n8Zxl4SD0fEN9-fdRpF6dax5hAlCMRUQNt54xx_4F-GCk_yUUJ4U9WBGKMp2ZkXRL7X_oJED1cxE2N66IYIipeRPZsensZ2rfl6Tz8ssl-LLvaJw-MvMvGzzAQxQ99lpa58EWjOmHwOAJhzlQuGpwQbbZX9cQwnieQjKx6gRRkYgasX9ITe2Wm3Hxj_d1qlg2SeE61sW6v7j3rdwHKZnJYWRmzMjy5T9zNd5Bz1tCMZ2K_yvHcG5eFit0jW_GT6M-1eAysVLgsf5P-kq5kNZu9FEeK6NTvcvfZqb1EAc1a8WWp40ABoNhigUjmLtOIQqabrCQFftSiV9GPxM6q4avdwZjOjlZmwhsaUKzKrFSrgZ3GQk-_kLihQ7LKvcbebVbhaeOwZKXQ3dSoySo9iFEpI4vc4ScN3cTuk4Y4K2iLDP26zOQcHeJZQrdmyB_5gr3txJ3dqCpp4j9EGY0UgDeolDmO0PvvZFLmN2vz_KArZuMk-VUMeZRTFDIJkE-nDFJshtMJvl011HFSejIylHbekJ3-m-FT8_3Dn6A62R-303tWOPNPOsy6MGUi8g7WpPL3eQoiv6EldSCYeSXMyFxxSPi6UAtmbLQiY3OvI-L5yksdgphqjMdEwBQ3t9n2FrKP_ME4VznHPC-ZkmMUkGH3JThiInHpnvhv5Jtbp4qxfYgpoMpPAByJZLmoNnpKeDX0n0mUIvR0srwd3e-FVH-JX4gi0x5-uVsX0nLP7BlmMBrCx4l1Y9ILuRhUPx3ZKXG-kJ3Z6eXMEjPnUC_kBA87zp4tZcj-Hr2JHr8vbtlcY8skt5XxSXge5cDedjl0nstyG24cuz2_NxyfnLXN-wvqo1GqMNsrC1ue6SGizno097u0u_v4J83UIO4MmSEEYg9vCZEmW8QPQ4QRbkN6xYVYGa-8Ux1p3tr7grVbJzpNGblyPWSApxn3f_Wut0JgvyZNP62VYIP0y66fLV78dPMX5fDSR5amNq-dV5KaFphi8bP9LkwMs6vUJVL_WKB6eEc5oYUPojVYLm8C-ID6ytGiZQG-JYEDC1rrlqMv6-GkhdZycsdrmeZhthfMAEOlPbv0jXouH_ixTvxeL_XIrwE_Og6vOemzYITPoiPHjxSAIWXARS8fnVavKsGgwGDnHufXOnndKh2n3-8hF19eXh_h8Bc7QzrnWqr_ktsbO-QT5ifszUlh8W83mdiJCTaOQXr-qBacaib4pHVH34g4mau_vENg7M7zfXP5kJ978OVeubfI0HqZDvvG01SxQiCfnHi37ZlFVYWSao49kvui1U96fheIAT1k_BMPh78KAGNPtCQJAqL4VrFYxPkvR-y7tS_Z4UBqhPiu-s1V2TpPlvkVKkLLYCKuQ7kmcMhpGz77Tc_ImV4z1xkIlg32oHWL4w4VLFjY7H1jgG-s2n4WmhvZbxs4S3m56fGje8wmOdEnXRool6FzbAJ00DKHJbzKibd3jmXZjuOYXE6yzwPNTXuegloJASCFBA1PQoceiRQtSc2eOau7qm3KBJ2UIc55g5JDiOEXvWMfsS-khQcExXy3dXPjWol3A4-WiXB9Jmz3ynHHSme0TKvqQLEpOifYhRR_ZV6g7QkV_-fGq7Meo4c1ouUrFSRzAtT7eV4Xr0v8cs4m0gBdOGX-56rD8uS1zv90Wn0OQWmezWOHTMaQI_i0AxtCRXmv-qptCfH69Q8VVJCjhOkKkyy2T-TS9fFj2Ak4_tZP-6trRU7J9qV8nWzO9TwJxHnEv0e9-byCXAFBbz1RvqZUx_fj2wya5GQBXsv5ldMcJpC6cDcR-9phNRap3NDw4HiNSMDkKO8QtNvSlqppK06VVqNX7Av_BD4xKacD72j0g2g6Gd1HVPB_erHIsJbRU7ur-We95xckXdYZ_IiApy8glZbT64jFSSs9xPZpQ7DtGBvFKUEUv8etRSKWRVvDWcm4mLmuZK8_HSm4rcfWQfFhpcV3o5zPNie6cJrJ118KhTWDVLDoNjozePHjaL3trKwJQIhQzurTM35cMatW1PkLWLLjREVqpohDakzMX5EvO4glzKfgx_0bGy-RwFT7yhXKfizF1D5RlVCmPv7mc7j_GsYQ-7AC7CgD3DqVjNOO3jl07ZavkhYbpm5QbHjLsDbnGATsU_MgTYr5EG7kOteBP03S3er58oeuRjevA1Ul7tOQp8kB6-jaxCjUF-m_x0a6f03kQM6dbh76cCnyplS892mKvA8AcrOmsIiNrw5VgzKru3hCbnSug9iqCTY3YSjAselvPxP-fFDWlsakmGddz8HPb_33p-neDCa2_W_fFR0G444cS5sRZndU6o9ECwAI45t1St0WDnatgPdlF8mfVzFlEN_ZGFsAc2SP0W5dngcMdGCZ3SUsRZLzjFe3WfxvzM3tyViA1wxH65Wr-7_kFXaN8EBLJ7pcwBfLpiBlh30nSkW6uUFunT3vDqZh-Y4PA15HINjJ1dYoYI8gF-SuTFDqgTXxL37jYxSkj234I3adN6EXyGnD68SYz0BajcEiTEXNd4BHIbCHiOX1gt7ZLJbXkJYZ3229UlrQ14DXnQoRlGL1AyrSEvrnqrkrt2_6ZSga99Sx_GFq6m0s_9Ds__WOdDpSwdQfld_BvdZCZN5XKaRhbI"/>\n    <noscript id="cf-captcha-bookmark"
							          class="cf-captcha-info">\n        <h1 style="color:#bd2426;">Please turn JavaScript on and reload the page.</h1>\n    </noscript>\n    <div id="no-cookie-warning"
							     class="cookie-warning"
							     style="display:none">\n        <p style="color:#bd2426;">Please enable Cookies and reload the page.</p>\n    </div>\n    <div id="trk_jschal_js"
							     style="display:none;background-image:url(\'/cdn-cgi/images/trace/managed/nojs/transparent.gif?ray=7a307ece1da57da1\')"/>\n</form>\n<script>\n    (function(){\n        window._cf_chl_opt={\n            cvId: \'2\',\n            cZone: \'us04web.zoom.us\',\n            cType: \'managed\',\n            cNounce: \'65760\',\n            cRay: \'7a307ece1da57da1\',\n            cHash: \'864be1ecedde32a\',\n            cUPMDTk: "\\/j\\/79634324546?pwd=UFTmTvrflvnc7joPXANY3Rx1gSnDGW.1?role=1&tk=eyJhbGciOiJIUzI1NiJ9.eyJhdWQiOm51bGwsImlzcyI6InptZmhTX0NIU2N5Yno3RWFoa1gtY0EiLCJleHAiOjE2Nzg2MDQ1MzAsImlhdCI6MTY3Nzk5OTczMH0.UvTEUkYMufiW6xv5BHi-S1bIsDd4eRS4uEcpYa8_YJ4&__cf_chl_tk=YcwdIDwadUyV8IiQ8jB6Z_TWnglAbA7tV2nonNlJXOY-1677999766-0-gaNycGzNCxA",\n            cFPWv: \'g\',\n            cTTimeMs: \'1000\',\n            cMTimeMs: \'0\',\n            cTplV: 1,\n            cTplB: \'cf\',\n            cK: "",\n            cRq: {\n                ru: \'aHR0cHM6Ly91czA0d2ViLnpvb20udXMvai83OTYzNDMyNDU0Nj9wd2Q9VUZUbVR2cmZsdm5jN2pvUFhBTlkzUngxZ1NuREdXLjE/cm9sZT0xJnRrPWV5SmhiR2NpT2lKSVV6STFOaUo5LmV5SmhkV1FpT201MWJHd3NJbWx6Y3lJNklucHRabWhUWDBOSVUyTjVZbm8zUldGb2ExZ3RZMEVpTENKbGVIQWlPakUyTnpnMk1EUTFNekFzSW1saGRDSTZNVFkzTnprNU9UY3pNSDAuVXZURVVrWU11ZmlXNnh2NUJIaS1TMWJJc0RkNGVSUzR1RWNwWWE4X1lKNA==\',\n                ra: \'cHl0aG9uLXJlcXVlc3RzLzIuMjcuMQ==\',\n                rm: \'R0VU\',\n                d: \'ZHcRFFBkGC+HgOpOExW7gVqfaObwTEAjn3AWaBOGio0ypskZcTONVRRKODKX1gaN+bikJ43v5YdrrsgrEMyiBO4WWwsBRV06bK9u/SbUVFtF46JHDICFLX7qaCf4HZpEwYcAPUNn0pLjM0fLVNGYEqk4rW+JCugmSXSRFWSID7OhkqwHxkMY1nDq8X3bOvSaHRIOVMQirPxRccf+X9JlnM9zURkgMcgqDNXMWvJNk4Farep/h9j0fni9EbMx0pz+arURebI6AYFQ+bTO01kxFUn0zsEDj65f24yCvrdaZNbf48YP9wFGFnLLMTh/T00aV/OmrYbpZydi+OJ7CPKzNr2upIz4URWP08JEH5MVZbNEkNz/aBukRfp102ZR+8hYQ+kySeS4yTtKG6QlaxuSdiAxscm1VsdaiiB4K8iJn474hFdgkz1jLYtyxgFDhqb/dNXO50AzyRfXlYLKG05FLQpUZhAyvoXzsDuaxo0L9kl3XCpFeENujzszW4pHkfkMIdAnoxkWCVo1rNXB7y/d7BbTOud/61K8zY4lvltGjo5BHY42+YtWBHDGIM+c809LEB6bHm7PCFP13hwjKOyznmSot+TgZ+l1qI8QGgBn9vPlkibYigvfFvbvPs+3cCbvXfgOojv+wPop5ULpmoUC6zOOiDDrJIsYKlzJMXVSf+rjP4wl728th2L17nUT7598Ro21N3ecoU6NzbpsGaOLAA==\',\n                t: \'MTY3Nzk5OTc2Ni43MzUwMDA=\',\n                m: \'zXJAzPK6/9Dmp1132soQAI8vCd6LZi+Ev2hE1C+7mcQ=\',\n                i1: \'34RawgtzJZMPTxebJ5+ADQ==\',\n                i2: \'IgMv2BAVdBd2ZcsO+ipWjw==\',\n                zh: \'sG1GYO6xWecb8Fy134kj6uvO4sNL9ePGSjCukXRqGrw=\',\n                uh: \'JNy/u1JaDY8l68+s834y37Qd6UIzTJLBzCkJPX4t/ps=\',\n                hh: \'Z74D9khcplSRNlxg6/dQkgj74Dzs158BWeOEhiUYBw4=\',\n            }\n        };\n        var trkjs = document.createElement(\'img\');\n        trkjs.setAttribute(\'src\', \'/cdn-cgi/images/trace/managed/js/transparent.gif?ray=7a307ece1da57da1\');\n        trkjs.setAttribute(\'alt\', \'\');\n        trkjs.setAttribute(\'style\', \'display: none\');\n        document.body.appendChild(trkjs);\n        var cpo = document.createElement(\'script\');\n        cpo.src = \'/cdn-cgi/challenge-platform/h/g/orchestrate/managed/v1?ray=7a307ece1da57da1\';\n        window._cf_chl_opt.cOgUHash = location.hash === \'\' && location.href.indexOf(\'#\') !== -1 ? \'#\' : location.hash;\n        window._cf_chl_opt.cOgUQuery = location.search === \'\' && location.href.slice(0, location.href.length - window._cf_chl_opt.cOgUHash.length).indexOf(\'?\') !== -1 ? \'?\' : location.search;\n        if (window.history && window.history.replaceState) {\n            var ogU = location.pathname + window._cf_chl_opt.cOgUQuery + window._cf_chl_opt.cOgUHash;\n            history.replaceState(null, null, "\\/j\\/79634324546?pwd=UFTmTvrflvnc7joPXANY3Rx1gSnDGW.1?role=1&tk=eyJhbGciOiJIUzI1NiJ9.eyJhdWQiOm51bGwsImlzcyI6InptZmhTX0NIU2N5Yno3RWFoa1gtY0EiLCJleHAiOjE2Nzg2MDQ1MzAsImlhdCI6MTY3Nzk5OTczMH0.UvTEUkYMufiW6xv5BHi-S1bIsDd4eRS4uEcpYa8_YJ4&__cf_chl_rt_tk=YcwdIDwadUyV8IiQ8jB6Z_TWnglAbA7tV2nonNlJXOY-1677999766-0-gaNycGzNCxA" + window._cf_chl_opt.cOgUHash);\n            cpo.onload = function() {\n                history.replaceState(null, null, ogU);\n            };\n        }\n        document.getElementsByTagName(\'head\')[0].appendChild(cpo);\n    }());\n</script>\n\n\n    </div>\n\n    <p style="font-family: \'Inter\';margin: 48px  auto 0; color: black;\n\nfont-style: normal;\nfont-weight: 400;\nfont-size: 20px;\nline-height: 20px; max-width: 600px; margin-bottom: 30px;">Zoom needs to review the security of your connection before proceeding.</p>\n\n\n  </div>\n</body>\n</html>\n'

------------------------------ End of error -----------------------------

----------------------------- Here is my code ----------------------------

import requests
import json

TOKEN = XXXXXX (token i get from my App Credentials)
USERID = XXXXXX (my user id)

urlCreate = f"https://api.zoom.us/v2/users/{USERID}/meetings"

urlGetUsers = “https://api.zoom.us/v2/users
headers = {
“Authorization”: f"Bearer {TOKEN}",
“Content-Type”: “application/json”
}

data = {
“topic”: “My Zoom Meeting”,
“type”: 2,
“start_time”: “2023-03-06T12:00:00Z”,
“duration”: 60,
“timezone”: “UTC”,
“agenda”: “Discuss project updates”,
“settings”: {
“host_video”: “true”,
“participant_video”: “true”,
“mute_upon_entry”: “true”,
“watermark”: “true”
}
}

response = requests.post(urlCreate, headers=headers, json=data)

json_object = json.loads(response.content)
meetingId = json_object[“id”]
join_url = json_object.get(“join_url”)
zoom_join_meeting_url = f"{join_url}?role=1&tk={TOKEN}"

response = requests.get(zoom_join_meeting_url)

if response.status_code == 200:
print(“Successfully joined Zoom meeting as a host”)
else:
print(“Failed to join Zoom meeting as a host”)

HI @amiadstern
Thanks for reaching out to the Zoom Developer forum and welcome to our community.
It looks like this error could be due to the way you are calling our endpoints.
Take a look at our Rate Limits page here:
https://marketplace.zoom.us/docs/api-reference/rate-limits/

Cheers,
Elisa

Thanks for your answer.
It doesn’t look like the issue since I’m doing only 2 API calls (as can be seen from the script sample i shared) and even when I add 10 sec sleep and breakpoint and wait additional few seconds, i still get the same results…

Is it possible to start a meeting using Zoom API for JWT App? if yes, can you refer me to the relevant code?

@elisa.zoom , can you please address my last question?

The join_url is for use in a user’s web browser, not for programmatic access. You’re getting a Cloudflare challenge to ensure that only humans are visiting that page. You should open that link in a browser window instead of calling it from code.

1 Like

Hi @amiadstern
If you mean to make an API call that will start the meeting, that is not possible.
You can create meetings VIA API but you will have to manually start the meeting.

1 Like