Choose an API in Microsoft Graph to create and join online meetings
Microsoft Graph offers two API sets that arrange and join online meetings on Microsoft Teams or Skype:
The choice is between:
- A convenient programmatic way to set up an online meeting in the Outlook calendar where attendees click to join the meeting, and continue their experience in Teams or Skype.
- A richer programmatic integration of Teams or Skype features in an app for a more customized experience.
Considerations when choosing an API for your scenario
Choose the calendar API for a streamlined, built-in integration with Outlook calendar that results in an online meeting event in the Outlook calendar:
- Programmatic support:
- Apps can directly create or update an event as an online meeting in the Outlook calendar, with a join-Teams-meeting blob inserted in the Outlook calendar event.
- Apps get properties for joining meeting over the Internet or by dialing in.
- Attendees' UI experience with the programmatically created calendar event is in full parity with any event that has been created through the Outlook UI:
- Attendees can choose to meet online or in person.
- Attendees can click in the join-Teams-meeting blob to join meeting over the Internet or by dialing in.
- Attendees can use other rich features of Teams, including video conferencing and meeting lobby, if configured.
Integration with Outlook calendar assumes an administrator has set up Outlook for online meetings. Verify the support before using the API.
Choose the cloud communications API for flexibility and broader programmatic support:
- Apps have more flexibility to further integrate the API results with line of business and other apps. The API is decoupled with any specific calendar, and does not create an event in any calendar.
- Apps can provide the following capabilities for attendees:
- Locale-based join information.
- Joining meeting over the Internet or by dialing in.
- Additional security features such as meeting lobby and automating attendee admission (preview).
- Associating meeting with a Microsoft Teams chat.
Comparing the APIs
The following table details the differences at the API level.
|Online meeting feature||Calendar API (event resource)||Cloud communications API (onlineMeeting resource)|
|Main API members||event resource:
- isOnlineMeeting property
- onlineMeeting property of the onlineMeetingInfo type
- onlineMeetingProvider property
- allowedOnlineMeetingProviders property
- defaultOnlineMeetingProvider property
|Integration with a calendar item||
- Create or update event API automatically sets the resultant Outlook calendar event as an online meeting.
- Use the isOnlineMeeting, onlineMeeting, and onlineMeetingProvider properties of the returned Outlook calendar event.
|- Create API returns an onlineMeeting resource that is independent of a particular calendar type.
- Does not create or update any Outlook event.
- Integrate the returned onlineMeeting resource information in an app experience appropriate for your scenario.
- Use createOrGet to return an online meeting that has a specified externalId value, or create one if none already exists, to streamline embedding the resultant meeting in a third-party calendar.
|Changing to offline meeting||- No - once you enable an event for joining online, you cannot update it to make it an offline meeting.
- Cannot change the onlineMeetingProvider property, nor set isOnlineMeeting to
|No - once you create an onlineMeeting resource, you can only delete it but cannot change it to an offline meeting.|
|Locale-based join information||No direct API integration.||- Use the
- See example.
|Joining over Internet (VoIP)||Through the onlineMeeting property, access joinUrl.||Use the joinWebUrl property.|
|Joining by dial-in||Through the onlineMeeting property, access:
- conferenceId, quickDial, phones, tollFreeNumbers, tollNumber.
|Through the audioConferencing property, access:
- conferenceId, tollFreeNumber, tollNumber.
- dialinUrl property for an externally-accessible web page that contains dial-in info to facilitate integration with third-party apps.
|Joining by video conferencing (audio and video)||No direct API integration.||Use the videoTeleconferenceId property.|
|Meeting lobby and automating attendee admission into online meeting||- No direct API integration.
- In the injected join-Teams-meeting blob of the event, attendee can click a Meeting options link to access meeting lobby, if enabled by the administrator.
|- API differentiates attendees from the organizer’s company and federated companies, and other attendees including anonymous ones.
- Use the lobbyBypassSettings property.
|Relating to a Teams chat||No direct API integration.||Use the chatInfo property.|