# Simple application to create meetings (.NET)

**URL:** <https://devforum.zoom.us/t/simple-application-to-create-meetings-net/10344>\
**Category:** API and Webhooks\
**Created:** [March 31, 2020, 4:33pm UTC](https://devforum.zoom.us/t/simple-application-to-create-meetings-net/10344 "2020-03-31T16:33:40Z")\
**Posts on this page:** 20\
**Page:** 1

<div class="post-metadata">

**Author:** ![mribera](https://avatars.discourse-cdn.com/v4/letter/m/6de8d8/32.png) [@mribera](https://devforum.zoom.us/u/mribera)\
**Post date:** [March 31, 2020, 4:33pm UTC](https://devforum.zoom.us/t/simple-application-to-create-meetings-net/10344/1 "2020-03-31T16:33:40Z")

</div>

I have a WinForms application on .NET and I would need to integrate a simple tool to create user meetings and get the code, just that. What would be the best and easiest way to do it?

I’ve read all the documentation but it’s not very clear to me.

Thank you very much in advance.

---

<div class="post-metadata">

**Author:** ![tommy](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/tommy/32/72769_2.png) [@tommy](https://devforum.zoom.us/u/tommy)\
**Post date:** [March 31, 2020, 10:20pm UTC](https://devforum.zoom.us/t/simple-application-to-create-meetings-net/10344/2 "2020-03-31T22:20:05Z")

</div>

Hey @mribera, thanks for posting and using Zoom!

First you’d want to create a [JWT App type](https://marketplace.zoom.us/docs/guides/getting-started/app-types/create-jwt-app), which allows you to generate a [JWT Token](https://marketplace.zoom.us/docs/guides/auth/jwt) to call the [Create Meeting API](https://marketplace.zoom.us/docs/api-reference/zoom-api/meetings/meetingcreate). Sample code is also provided at the bottom of each endpoint page:

 ![Screen Shot 2020-03-31 at 4.19.40 PM](https://us1.discourse-cdn.com/flex016/uploads/zoomdeveloper/original/2X/a/a757ce403529c3fcebacbd4ccbfcf8fde9ee38b2.png)

Let me know if that helps!

Thanks,  
Tommy

---

<div class="post-metadata">

**Author:** ![mribera](https://avatars.discourse-cdn.com/v4/letter/m/6de8d8/32.png) [@mribera](https://devforum.zoom.us/u/mribera)\
**Post date:** [April 1, 2020, 10:32am UTC](https://devforum.zoom.us/t/simple-application-to-create-meetings-net/10344/3 "2020-04-01T10:32:58Z")

</div>

I was able to create a meeting but I have a doubt: I had to create an App in the Marketplace and the meeting is created in my user. In order to make this possible for each of our clients to create their own meetings, each one of them will have to create an App?

Thanks!

---

<div class="post-metadata">

**Author:** ![tommy](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/tommy/32/72769_2.png) [@tommy](https://devforum.zoom.us/u/tommy)\
**Post date:** [April 1, 2020, 6:43pm UTC](https://devforum.zoom.us/t/simple-application-to-create-meetings-net/10344/4 "2020-04-01T18:43:13Z")

</div>

Hey @mribera,

If you are looking to share this integration outside your Zoom account, then you can simply use an [OAuth app](https://marketplace.zoom.us/docs/guides/getting-started/app-types/create-oauth-app) instead and the [OAuth install flow](https://marketplace.zoom.us/docs/guides/auth/oauth) so your clients can install your integration.

Does that make sense?

Thanks,  
Tommy

---

<div class="post-metadata">

**Author:** ![mribera](https://avatars.discourse-cdn.com/v4/letter/m/6de8d8/32.png) [@mribera](https://devforum.zoom.us/u/mribera)\
**Post date:** [April 2, 2020, 7:23am UTC](https://devforum.zoom.us/t/simple-application-to-create-meetings-net/10344/5 "2020-04-02T07:23:55Z")

</div>

Hi,

It’s the same thing, isn’t it? Each client would have to create an OAuth App to get their Client ID and Client Secret.

Thanks!

---

<div class="post-metadata">

**Author:** ![tommy](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/tommy/32/72769_2.png) [@tommy](https://devforum.zoom.us/u/tommy)\
**Post date:** [April 2, 2020, 7:02pm UTC](https://devforum.zoom.us/t/simple-application-to-create-meetings-net/10344/6 "2020-04-02T19:02:05Z")

</div>

Hey @mribera,

No, each client would be able to share your OAuth app by simply installing it 🙂

Just like how you can install any of these apps with a button press: [http://marketplace.zoom.us/](http://marketplace.zoom.us/)

Please see the OAuth flow here: [https://marketplace.zoom.us/docs/guides/auth/oauth](https://marketplace.zoom.us/docs/guides/auth/oauth)

Thanks,  
Tommy

---

<div class="post-metadata">

**Author:** ![mribera](https://avatars.discourse-cdn.com/v4/letter/m/6de8d8/32.png) [@mribera](https://devforum.zoom.us/u/mribera)\
**Post date:** [April 6, 2020, 7:23am UTC](https://devforum.zoom.us/t/simple-application-to-create-meetings-net/10344/7 "2020-04-06T07:23:35Z")

</div>

Got it! Thanks.

I saw that there is a possibility to create a meeting and force the video to start, but is there any possibility to force the audio to start automatically?

Thanks!

---

<div class="post-metadata">

**Author:** ![tommy](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/tommy/32/72769_2.png) [@tommy](https://devforum.zoom.us/u/tommy)\
**Post date:** [April 6, 2020, 10:31pm UTC](https://devforum.zoom.us/t/simple-application-to-create-meetings-net/10344/8 "2020-04-06T22:31:57Z")

</div>

Hey @mribera,

You can also adjust the audio settings in the settings object of the [Create Meeting request body.](https://marketplace.zoom.us/docs/api-reference/zoom-api/meetings/meetingcreate)

Thanks,  
Tommy

---

<div class="post-metadata">

**Author:** ![mribera](https://avatars.discourse-cdn.com/v4/letter/m/6de8d8/32.png) [@mribera](https://devforum.zoom.us/u/mribera)\
**Post date:** [April 7, 2020, 6:57am UTC](https://devforum.zoom.us/t/simple-application-to-create-meetings-net/10344/9 "2020-04-07T06:57:49Z")

</div>

The only audio option in the settings is to enable the audio system, and the default is “both”, so that’s not it.

Please, can you tell me some way to force the audio input to be always active? especially for mobile devices.

Thanks.

---

<div class="post-metadata">

**Author:** ![tommy](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/tommy/32/72769_2.png) [@tommy](https://devforum.zoom.us/u/tommy)\
**Post date:** [April 7, 2020, 5:52pm UTC](https://devforum.zoom.us/t/simple-application-to-create-meetings-net/10344/10 "2020-04-07T17:52:33Z")

</div>

Hey @mribera,

Only users can set their [default audio settings](https://support.zoom.us/hc/en-us/articles/201362623-Changing-settings-in-the-desktop-client-or-mobile-app), otherwise, that would be a privacy issue.

Thanks,  
Tommy

---

<div class="post-metadata">

**Author:** ![indreshkumar1988](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/indreshkumar1988/32/11389_2.png) [@indreshkumar1988](https://devforum.zoom.us/u/indreshkumar1988)\
**Post date:** [July 5, 2020, 2:29pm UTC](https://devforum.zoom.us/t/simple-application-to-create-meetings-net/10344/11 "2020-07-05T14:29:02Z")

</div>

Hi Tommy,

I am calling api from c# .net core.

I am using same code as above , i got respones:200 OK , but unable to see the meetings where it is created.  
Please help me .

---

<div class="post-metadata">

**Author:** ![tommy](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/tommy/32/72769_2.png) [@tommy](https://devforum.zoom.us/u/tommy)\
**Post date:** [July 7, 2020, 11:25pm UTC](https://devforum.zoom.us/t/simple-application-to-create-meetings-net/10344/12 "2020-07-07T23:25:47Z")

</div>

Hey @indreshkumar1988,

I have replied to you here:

> [@Creating meeting through zoom api in asp.net c# web application](https://devforum.zoom.us/t/creating-meeting-through-zoom-api-in-asp-net-c-web-application/6442/16):
>
> Hey @indreshkumar1988, You can see the created meeting in your [Zoom Web Portal](https://zoom.us/meeting). Thanks, Tommy

Thanks,  
Tommy

---

<div class="post-metadata">

**Author:** ![dharminder](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/dharminder/32/12561_2.png) [@dharminder](https://devforum.zoom.us/u/dharminder)\
**Post date:** [July 27, 2020, 5:57pm UTC](https://devforum.zoom.us/t/simple-application-to-create-meetings-net/10344/13 "2020-07-27T17:57:12Z")

</div>

Hey @tommy,

Is it possible in c# that create meeting should ask for zoom username and password to continue for creating a new meeting and we don’t need to create the app and don’t need to pass the API Key and API Secret. Just like the way it is happening in Android SDK It will just ask user to fill the username and password and meeting will gets created.

Please let me know if this can be achieved in c# also.

---

<div class="post-metadata">

**Author:** ![tommy](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/tommy/32/72769_2.png) [@tommy](https://devforum.zoom.us/u/tommy)\
**Post date:** [July 29, 2020, 9:49pm UTC](https://devforum.zoom.us/t/simple-application-to-create-meetings-net/10344/14 "2020-07-29T21:49:22Z")

</div>

Hey @dharminder,

If you are not using the SDKs, then you will need to use [OAuth](https://marketplace.zoom.us/docs/guides/auth/oauth), which will prompt the user for their login, and return you an access token that you can use to call the [Zoom API](https://marketplace.zoom.us/docs/api-reference/zoom-api) on their behalf.

Thanks,  
Tommy

---

<div class="post-metadata">

**Author:** ![jcochrane](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/jcochrane/32/17752_2.png) [@jcochrane](https://devforum.zoom.us/u/jcochrane)\
**Post date:** [October 26, 2020, 9:11pm UTC](https://devforum.zoom.us/t/simple-application-to-create-meetings-net/10344/15 "2020-10-26T21:11:13Z")

</div>

Hello, im now developer

Do you have an example of **C#** code to create a meeting in http client request .Net? im actually triying to create one but without any good results.

---

<div class="post-metadata">

**Author:** ![tommy](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/tommy/32/72769_2.png) [@tommy](https://devforum.zoom.us/u/tommy)\
**Post date:** [October 28, 2020, 6:51am UTC](https://devforum.zoom.us/t/simple-application-to-create-meetings-net/10344/16 "2020-10-28T06:51:54Z")

</div>

Hey @jcochrane,

Checkout my post here explaining how to see the sample code for any endpoint on our docs 🙂

> [@Simple application to create meetings (.NET)](https://devforum.zoom.us/t/simple-application-to-create-meetings-net/10344/2):
>
> Hey @mribera, thanks for posting and using Zoom! First you’d want to create a [JWT App type](https://marketplace.zoom.us/docs/guides/getting-started/app-types/create-jwt-app), which allows you to generate a [JWT Token](https://marketplace.zoom.us/docs/guides/auth/jwt) to call the [Create Meeting API](https://marketplace.zoom.us/docs/api-reference/zoom-api/meetings/meetingcreate). Sample code is also provided at the bottom of each endpoint page: Let me know if that helps! Thanks, Tommy

Thanks,  
Tommy

---

<div class="post-metadata">

**Author:** ![hagaih](https://avatars.discourse-cdn.com/v4/letter/h/50afbb/32.png) [@hagaih](https://devforum.zoom.us/u/hagaih)\
**Post date:** [November 26, 2020, 6:31am UTC](https://devforum.zoom.us/t/simple-application-to-create-meetings-net/10344/17 "2020-11-26T06:31:33Z")

</div>

Hey, @tommy I’m also trying to write a c# console application that will run and create meetings but it’s not working properly.  
As the meeting is created doesn’t show my Topic and instead just Zoom Meeting, Also I’m unable to set the alternate host as It does also not appear in that meeting created and also the time of the meeting is not created correctly.  
here is my code:

**Meeting request class:**  
using System;  
using System.Collections.Generic;  
using System.Linq;  
using System.Text;  
using System.Text.Json.Serialization;  
using System.Threading.Tasks;

namespace Zoom.Sync.Api  
{  
public class Recurrence  
{  
[JsonPropertyName(“type”)]  
public string Type;

```
    [JsonPropertyName("repeat_interval")]
    public string RepeatInterval;

    [JsonPropertyName("weekly_days")]
    public string WeeklyDays;

    [JsonPropertyName("monthly_day")]
    public string MonthlyDay;

    [JsonPropertyName("monthly_week")]
    public string MonthlyWeek;

    [JsonPropertyName("monthly_week_day")]
    public string MonthlyWeekDay;

    [JsonPropertyName("end_times")]
    public string EndTimes;

    [JsonPropertyName("end_date_time")]
    public string EndDateTime;
}

public class Settings
{
    [JsonPropertyName("host_video")]
    public string HostVideo;

    [JsonPropertyName("participant_video")]
    public string ParticipantVideo;

    [JsonPropertyName("cn_meeting")]
    public string CnMeeting;

    [JsonPropertyName("in_meeting")]
    public string InMeeting;

    [JsonPropertyName("join_before_host")]
    public string JoinBeforeHost;

    [JsonPropertyName("mute_upon_entry")]
    public string MuteUponEntry;

    [JsonPropertyName("watermark")]
    public string Watermark;

    [JsonPropertyName("use_pmi")]
    public string UsePmi;

    [JsonPropertyName("approval_type")]
    public string ApprovalType;

    [JsonPropertyName("registration_type")]
    public string RegistrationType;

    [JsonPropertyName("audio")]
    public string Audio;

    [JsonPropertyName("auto_recording")]
    public string AutoRecording;

    [JsonPropertyName("enforce_login")]
    public string EnforceLogin;

    [JsonPropertyName("enforce_login_domains")]
    public string EnforceLoginDomains;

    [JsonPropertyName("alternative_hosts")]
    public string AlternativeHosts;

    [JsonPropertyName("global_dial_in_countries")]
    public List<string> GlobalDialInCountries;

    [JsonPropertyName("registrants_email_notification")]
    public string RegistrantsEmailNotification;
}

public class Meeting
{
    [JsonPropertyName("topic")]
    public string Topic;

    [JsonPropertyName("type")]
    public string Type;

    [JsonPropertyName("start_time")]
    public string StartTime;

    [JsonPropertyName("duration")]
    public string Duration;

    [JsonPropertyName("schedule_for")]
    public string ScheduleFor;

    [JsonPropertyName("timezone")]
    public string Timezone;

    [JsonPropertyName("password")]
    public string Password;

    [JsonPropertyName("agenda")]
    public string Agenda;

    [JsonPropertyName("recurrence")]
    public Recurrence Recurrence;

    [JsonPropertyName("settings")]

  public Settings Settings;
}

```

}

**Meeting Response class**  
using System;  
using System.Collections.Generic;  
using System.Linq;  
using System.Text;  
using System.Text.Json.Serialization;  
using System.Threading.Tasks;

namespace Zoom.Sync.Api.Models  
{

```
public class ApprovedOrDeniedCountriesOrRegions
{
    public bool enable { get; set; }
    public string method { get; set; }
    public List<object> approved_list { get; set; }
    public List<object> denied_list { get; set; }
}

public class Settings
{
    public bool host_video { get; set; }
    public bool participant_video { get; set; }
    public bool cn_meeting { get; set; }
    public bool in_meeting { get; set; }
    public bool join_before_host { get; set; }
    public bool mute_upon_entry { get; set; }
    public bool watermark { get; set; }
    public bool use_pmi { get; set; }
    public int approval_type { get; set; }
    public int registration_type { get; set; }
    public string audio { get; set; }
    public string auto_recording { get; set; }
    public bool enforce_login { get; set; }
    public string enforce_login_domains { get; set; }
    public string alternative_hosts { get; set; }
    public bool close_registration { get; set; }
    public bool waiting_room { get; set; }
    public List<object> global_dial_in_countries { get; set; }
    public List<object> global_dial_in_numbers { get; set; }
    public string contact_name { get; set; }
    public string contact_email { get; set; }
    public bool registrants_confirmation_email { get; set; }
    public bool registrants_email_notification { get; set; }
    public bool meeting_authentication { get; set; }
    public string authentication_option { get; set; }
    public string authentication_domains { get; set; }
    public string authentication_name { get; set; }
    public List<object> interpreters { get; set; }
    public bool show_share_button { get; set; }
    public bool allow_multiple_devices { get; set; }
    public string encryption_type { get; set; }
    public ApprovedOrDeniedCountriesOrRegions approved_or_denied_countries_or_regions { get; set; }
}

public class Recurrence
{
    public int type { get; set; }
    public int repeat_interval { get; set; }
    public string weekly_days { get; set; }
    public int monthly_day { get; set; }
    public int monthly_week { get; set; }
    public int monthly_week_day { get; set; }
    public int end_times { get; set; }
    public string end_date_time { get; set; }
}

public class Meeting
{
    public long id { get; set; }
    public string assistant_id { get; set; }
    public string host_email { get; set; }
    public string registration_url { get; set; }
    public string topic { get; set; }
    public int type { get; set; }
    public string start_time { get; set; }
    public int duration { get; set; }
    public string timezone { get; set; }
    public string created_at { get; set; }
    public string agenda { get; set; }
    public string start_url { get; set; }
    public string join_url { get; set; }
    public string password { get; set; }
    public string h323_password { get; set; }
    public int pmi { get; set; }
    public List<object> tracking_fields { get; set; }
    public List<object> occurrences { get; set; }
    public Settings settings { get; set; }
    public Recurrence recurrence { get; set; }
}

```

}

**and the Program class**

using Microsoft.IdentityModel.Tokens;  
using Newtonsoft.Json;  
using RestSharp;  
using System;  
using System.Collections.Generic;  
using System.Text;

namespace Zoom.Sync.Api  
{  
class Program  
{  
static void Main(string args)  
{  
var tokenHandler = new System.IdentityModel.Tokens.Jwt.JwtSecurityTokenHandler();  
var now = DateTime.UtcNow;  
var apiSecret = “API SECRET”;  
byte symmetricKey = Encoding.ASCII.GetBytes(apiSecret);

```
        var tokenDescriptor = new SecurityTokenDescriptor
        {
            Issuer = "API Key",
            Expires = now.AddSeconds(60),
            SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(symmetricKey), SecurityAlgorithms.HmacSha256),
        };
        var token = tokenHandler.CreateToken(tokenDescriptor);

        var tokenString = tokenHandler.WriteToken(token);           
        Meeting iMeeting = new Meeting();
        
        iMeeting.Topic = $"Test Zoom Meeting Created By Sync App {Environment.MachineName}";
        iMeeting.Type = "2";
        //iMeeting.Timezone = "Asia/Jerusalem";
        iMeeting.StartTime = DateTime.Now.AddHours(8).ToString("yyyy-MM-ddTHH:mm:ss");
        iMeeting.Duration = "60";
        Settings iMeetingSettings = new Settings();

        iMeetingSettings.AlternativeHosts = "meeting-alternate-hostmail@mydomain.com";
        iMeetingSettings.HostVideo = "true";
        iMeetingSettings.JoinBeforeHost = "fasle";
        iMeetingSettings.MuteUponEntry = "true";
        iMeetingSettings.Audio = "both";
        iMeetingSettings.AutoRecording = "cloud";
        iMeetingSettings.GlobalDialInCountries = new List<string>() { "IL", "US" };
        iMeeting.Settings = idcMeetingSettings;
        var client = new RestClient("https://api.zoom.us/v2/users/meetinghostmail@mydomain.com/meetings");
        var request = new RestRequest(Method.POST);
        request.AddHeader("content-type", "application/json");
        request.AddHeader("authorization", String.Format("Bearer {0}", tokenString));
        request.AddJsonBody(iMeeting);
        IRestResponse response = client.Execute(request);
        if(response.StatusCode == System.Net.HttpStatusCode.Created)
        {
            Console.WriteLine(response.Content);
            Zoom.Sync.Api.Models.Meeting createdMeeting = JsonConvert.DeserializeObject<Zoom.Sync.Api.Models.Meeting>(response.Content);
            Console.WriteLine($"ID: {createdMeeting.id} --> Join Url: {createdMeeting.join_url}");
        }
        Console.ReadLine();
    }
}

```

}

What am I missing?

My meeting time should be at Jerusalem Time Zone, and my user’s emails exist under our organization account.

Looking forward to your reply,  
Thanks,  
Hagai.

---

<div class="post-metadata">

**Author:** ![will.zoom](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/will.zoom/32/14417_2.png) [@will.zoom](https://devforum.zoom.us/u/will.zoom)\
**Post date:** [November 30, 2020, 6:39pm UTC](https://devforum.zoom.us/t/simple-application-to-create-meetings-net/10344/18 "2020-11-30T18:39:30Z")

</div>

Hi @hagaih,

Can you check your account settings to see if the “Use PMI” setting is enabled?

 ![image](https://us1.discourse-cdn.com/flex016/uploads/zoomdeveloper/original/3X/7/0/702f7c2983ec34d0de4e2049edb02a10e18a7770.png)

If it is, it could be overriding your requests. Let me know—thanks!

Best,  
Will

---

<div class="post-metadata">

**Author:** ![hagaih](https://avatars.discourse-cdn.com/v4/letter/h/50afbb/32.png) [@hagaih](https://devforum.zoom.us/u/hagaih)\
**Post date:** [November 30, 2020, 7:45pm UTC](https://devforum.zoom.us/t/simple-application-to-create-meetings-net/10344/19 "2020-11-30T19:45:23Z")

</div>

@will.zoom, as far as I see it is not enabled

 ![image](https://us1.discourse-cdn.com/flex016/uploads/zoomdeveloper/original/3X/5/b/5bbfe9fd60bc4f75a751459c4b6891c673736644.png)

---

<div class="post-metadata">

**Author:** ![will.zoom](https://sea2.discourse-cdn.com/flex016/user_avatar/devforum.zoom.us/will.zoom/32/14417_2.png) [@will.zoom](https://devforum.zoom.us/u/will.zoom)\
**Post date:** [December 1, 2020, 5:35pm UTC](https://devforum.zoom.us/t/simple-application-to-create-meetings-net/10344/20 "2020-12-01T17:35:19Z")

</div>

Hey @hagaih,

It looks like these are your user level settings. Can you confirm that it’s not enabled/locked on your account-wide settings? You may need to confirm this with your account owner or admin.

Thanks,  
Will

[Next page](https://devforum.zoom.us/t/simple-application-to-create-meetings-net/10344.md?page=2)
