Add meeting registrant returns 200 but blank response and no registrant is added

Description
I am attempting to register an attendee in a meeting (Pro account) using GoogleScript and the endpoint is returning HTTP 200 but a blank body with the registration not being added (I see this from viewing the list of registrations in the zoom web portal)

POST /v2/users/meetings/${meetingId}/registrants`

I am successfully using JWT to pull meeting details via
GET /v2/meetings/${meetingId}
or retrieve the manually registered attendees via
GET /v2/meetings/${meetingId}/registrants
so I believe the JWT authentication is not the issue

Any advice would be appreciated.

Error
The error is that the JSON body is not returned and the registrant is not created even though the HTTP return code is 200

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

Which Endpoint/s?
/v2/users/meetings/${meetingId}/registrants

How To Reproduce (If applicable)

  1. Function in Google Script that is calling the endpoint
    function createMeetingRegistrant () {
    const meetingId = ‘a removed but real ID’;
    var Options = {
    email: ’ a removed but valid email address’,
    first_name: ‘Mike’,
    last_name: ‘Brown’,
    };
    var requestt;
    requestt = UrlFetchApp.fetch(
    https://api.zoom.us/v2/users/meetings/${meetingId}/registrants,
    {
    method: ‘POST’,
    contentType: ‘application/json’,
    headers: { Authorization: Bearer ${getZoomAccessToken()} },
    payload: JSON.stringify(Options),
    }
    );
    Logger.log(requestt.getResponseCode() );
    Logger.log(requestt.getHeaders());
    Logger.log(requestt.getContent());
    Logger.log(requestt.getContentText());

    ====
  2. The returned logged output:
    3:10:18 PM Notice Execution started
    3:10:18 PM Info 200.0
    3:10:18 PM Info| {Cache-Control=no-cache, no-store, must-revalidate, no-transform, Expires=Thu, 01 Jan 1970 00:00:00 GMT, Set-Cookie=cred=; Path=/; Secure; HttpOnly, Content-Length=0, Pragma=no-cache, Referrer-Policy=strict-origin-when-cross-origin, Connection=keep-alive, x-zm-trackingid=v=2.0;clid=us02;rid=WEB_, X-XSS-Protection=1; mode=block, Strict-Transport-Security=max-age=31536000; includeSubDomains, Date=Wed, 23 Jun 2021 14:10:18 GMT, X-Content-Type-Options=nosniff}
    3:10:18 PM Info| ← this is the blank body
    3:10:18 PM Info|

Screenshots (If applicable)
N/A

Additional context
This seems to be the same issue as reported in this Topic post Create Meeting v2 API - add attendees / participants - #12 by tmswartz12
Unfortunately, the poster said they found the resolution but did not enter it into the thread

I have a paid account and the settings for the meeting I am trying to add the registrant into is below with some elements removed such as ID’s and passwords:
{join_url=https://us02web.zoom.us/j/ registration_url=https://us02web.zoom.us/meeting/register/,
host_email=,
topic=Integration testing call,
encrypted_password=,
timezone=Europe/London,
status=waiting,
duration=60.0,
uuid=,
settings={alternative_hosts_email_notification=true, approved_or_denied_countries_or_regions={enable=false}, contact_name=, encryption_type=enhanced_encryption, global_dial_in_countries=[US], registrants_confirmation_email=true, watermark=false, alternative_hosts=, global_dial_in_numbers=[{country_name=US, number=+1 3462487799, type=toll, city=Houston, country=US}, {type=toll, number=+1 6699006833, country_name=US, city=San Jose, country=US}, {type=toll, country_name=US, number=+1 9294362866, city=New York, country=US}, {type=toll, city=Tacoma, country_name=US, country=US, number=+1 2532158782}, {number=+1 3017158592, country=US, country_name=US, type=toll, city=Washington DC}, {city=Chicago, type=toll, number=+1 3126266799, country=US, country_name=US}], approval_type=0.0, close_registration=true, use_pmi=false, auto_recording=none, jbh_time=0.0, show_share_button=true, registrants_email_notification=true, contact_email=, device_testing=false, host_video=true, mute_upon_entry=false,
waiting_room=true, breakout_room={enable=false}, registration_type=1.0, allow_multiple_devices=true, meeting_authentication=false, enforce_login_domains=, join_before_host=false, participant_video=true, enforce_login=false, request_permission_to_unmute_participants=false, in_meeting=false, cn_meeting=false, audio=both},
start_time=2021-06-28T14:00:00Z, created_at=2021-06-15T16:01:45Z, start_url=https://us02web.zoom.us/s/, agenda=This is the description for the integration call, host_id=, pstn_password=, h323_password=,
type=2.0, password=, assistant_id=}

Hi @PeoplesGeek – thank you for inquiring about this! For “add a meeting registrant” you should actually get a 201 status code response when the registrant is successfully added (see below):

Can you please double check your request body schema for any possible errors? Here is an example of a post request to a JWT authorized app, starting line 25.

If everything is set up correctly, please send an email to developersupport@zoom.us with the request body and meeting id you’re using so I can try to reproduce the issue on my end.

Thank you,
Gianni

Thanks @gianni.zoom
I have checked the schema and it looks OK so I have forwarded the body and meeting ID to you as requested.
I also thought it was odd to return HTTP 200 which often indicates success instead of the documented 201.
Cheers,
Brian

Thanks @PeoplesGeek for sending that over – we’ll look further into it!

Gianni

I am getting the same error. Empty response.
Also, the Zoom staff has not provided any reason as to why the empty response.

Python code:
r = requests.post(
f’https://api.zoom.us/v2/users/me/meetings/81928392986/registrants’,
headers=headers, data=json.dumps(registerdetails))

print(r,r.text)

r,text is empty.

H @gianni.zoom,
I’ve tested the CURL example that you provided by email and it was successful - however it’s still not working when called by Google App Script and I see that @nayagoet is having the similar issue using Python. Can you give any hints on debugging this so we can get it working?
Many thanks,
Brian

Hi @gianni.zoom,

HUGE embarrassment on my part!
I have discovered my error = the endpoint had a typo! I had a spurious ‘user’ at the start
/users/meetings/{meetingId}/registrants instead of
/meetings/{meetingId}/registrants

I was comparing the CURL sample you sent with my code on a character by character basis to discover this - my only defence (and it is a weak one) is that no one else saw this either and the return code of 200 would normally indicate success so I would respectfully ask that a call to a non-existent endpoint should not return success.

( @nayagoet Your example has a strange-looking endpoint too. You should check it’s not a typo in your code)

Thank you for your help and patience.

Brian

  1. The return code 200 misleading for an incorrect URI
  2. I too realized that the URI was wrong and changing to https://api.zoom.us/v2/meetings/81928392986/registrants worked.

Thank you

Hi @PeoplesGeek @nayagoet I am so happy you were able to debug and solve accordingly. Thank you for your contributions to the Zoom Developer Community. :grinning_face_with_smiling_eyes:

Thanks @gianni.zoom,

Could you feed back to the development team that an invalid URI/endpoint should not return 200, please?
(Or let me know why this would be valid)

Cheers,

Brian

Thanks, @PeoplesGeek – on it!