ZoomNet.Utilities.ZoomException: 'Account Does Not Enabled REST API.' - From API

We using OAuth server-to-server app. The one used for JWT is not used during sending requests to API because You have switched JWT method on your side (switched off in zoom admin panel). The integration and app has been prepared as You described in the documentation but It doesn’t work. Below Sample payload you use to generate token using your S2S Oauth app:
Token request
Url: https://api.zoom.us/oauth/token

Content:
FormUrlEncodedContent
Key: ‘grant_type’, Value: ‘client_credentials’
Header Authorization:
Value: ‘Basic ck1FeEx5Tl9Uc1NvNTNRWGcyVFlUdzpVOWF4MElrWHBrakEwaHBOZDUzeUdWNkRwbVBIVjFJaA==’

Example response:
{“access_token”:“eyJzdiI6IjAwMDAwMSIsImFsZyI6IkhTNTEyIiwidiI6IjIuMCIsImtpZCI6IjAxMjZjMmFmLTJkYWItNDczZS1iMzNlLTVlMDE2Y2IyOWIwMSJ9.eyJhdWQiOiJodHRwczovL29hdXRoLnpvb20udXMiLCJ1aWQiOiJuTmxQMk5tUFMtMmpaTWZhSEg1d3FBIiwidmVyIjo5LCJhdWlkIjoiM2U0ZGJhMWZmZWRlYTU1Y2FkNmZiMDYwYTFjOGE4YmMiLCJuYmYiOjE3MDExNzk4NDMsImlzcyI6InptOmNpZDpyTUV4THlOX1RzU281M1FYZzJUWVR3IiwiZ25vIjowLCJleHAiOjE3MDExODM0NDMsInR5cGUiOjIsImlhdCI6MTcwMTE3OTg0M30._v31zjOt0F4u16WP646Px_4fN4f_KKzLTgRqfV_XmaYD24YSKaJf8YnRvH-U9BUnYUzblpVGYXXDk-iVQIdNPQ”,“token_type”:“bearer”,“expires_in”:3600,“scope”:“iq_conversation:read recording:write imchat:userapp recording:read webinar:read webinar_token:read:live_streaming iq_coaching:read iq_comment:write chat_channel:write webinar_token:read:local_recording user:read user:write meeting:read:sip_dialing chat_message:write app:channel_content:write iq_deal:read chat_channel:read chat_contact:read iq_conversation:write meeting:write:sip_dialing user_info:read webinar:write user_zak:read iq_comment:read meeting:write iq_team:read meeting_token:read:live_streaming chat_message:read meeting:read iq_playlist:read meeting_token:read:local_recording iq_analytics_metrics:read”}

  • sample api call endpoint you use you encounter the issue

This data is downloaded precisely from the mechanism located in the ZoomNet library, which fulfills the functionality of the zoom API wrapper.
Code which make this requests is exactly in this file:

Setup for this code in C# is:
public void Call()
{
var zoomConnection = OAuthConnectionInfo.ForServerToServer(
clientId: “OzjbaYegSLOt_8Eps5KmHg”,
clientSecret: “C6Gh0wTftJX3j8z3eLXX0S8Ph44PK5lc”,
accountId: “ibBoqxjMROi7Dy6jzsd-8Q”);

        var zoomClient = new ZoomClient(zoomConnection);

        var webinar = await CreateWebinar(
            zoomClient,
            dto.Title,
            dto.Description,
            dto.DateTime,
            dto.EstimatedEndDateTime,
            dto.LecturerEmail,
            dto.ModeratorEmail);
    }

    public async Task<ScheduledWebinar> CreateWebinar(
        ZoomClient zoomClient,
        string title,
        string description,
        DateTime date,
        DateTime estimatedEndTime,
        string lecturerEmail,
        string moderatorEmail)
    {
        var duration = (estimatedEndTime - date).TotalMinutes;

        var password = "";
        while (string.IsNullOrEmpty(password))
        {
            try
            {
                password = "Sample password";
            }
            catch (Exception)
            {
                password = "";
            }
        }

        var scheduledWebinar = await zoomClient.Webinars.CreateScheduledWebinarAsync(
        userId: zoomSettings.UserEmail,
        topic: title,
        agenda: description,
        start: date,
        duration: (int)duration,
        TimeZones.UTC,
        password,
        new ExtendedWebinarSettings
        {
            AlternativeHosts = AlternativeHosts(moderatorEmail),
            AutoRecording = AutoRecordingType.OnCloud,
            StartVideoWhenHostJoins = true,

            ShowSocialShareButtons = false,

            // Video for panelists
            StartVideoWhenPanelistsJoin = true,

            // ??
            EnableHighDefinitionVideo = true,

            HdVideoForAttendees = true,
            AlwaysSendFullHdToAtendees = true,
            PanelistsInvitationEmailNotification = panelistsInvitationEmailNotification,
        });

        if (!string.IsNullOrEmpty(lecturerEmail))
        {
            await AddPanelist(scheduledWebinar.Id.ToString(), lecturerEmail, "Prowadzący");
        }

        return scheduledWebinar;
    }

Please recheck this because based on forum threads It is quite often issue and We need to fix it asap because We are losing users. The integration has been prepared as You described in the documentation but It doesn’t work. I have contacted to support before but they told me that everything is fine from their perspective (ticket TS0154291)

Hi @a.seliga
Thanks for reaching out to us
It looks like you are passing the wrong value for grant_type, it should not be client_credentials, it has to be account_credentials