This document summarizes the latest, authoritative information about programmatically creating Microsoft Teams meetings via API, including limitations and code samples.1
Microsoft offers two main API sets for creating/joining Teams meetings:
- Creates an Outlook calendar event with a Teams meeting link.2
- Use the
/me/eventsendpoint with properties:"isOnlineMeeting": true"onlineMeetingProvider": "teamsForBusiness"
- Best for: When you want a meeting that appears in the user's Outlook calendar and provides a Teams join link.2
- Limitations: For personal Microsoft accounts, this does NOT create a Teams meeting link (see below).3
- Creates a Teams meeting directly (not tied to a calendar event).[^^4]
- Use the
/me/onlineMeetingsendpoint.4 - Best for: Richer integration, more control, not tied to Outlook calendar.4
- Limitations: Only works for work/school (Azure AD) accounts, NOT personal Microsoft accounts.5
Work/School (Azure AD) accounts:
- Both APIs work as described above.6
- You can create, update, and delete Teams meetings programmatically.6
Personal Microsoft accounts:
- You CANNOT create Teams meetings programmatically via public APIs.35
- The Calendar API will create an event, but the
onlineMeetingfield will benulland no Teams link is generated.3 - The Cloud Communications API does not support personal accounts at all.5
- There is currently no workaround and no plans to support this (as of 2025).7
- There is currently no workaround and no plans to support this (as of 2025).
- Calendar API: Create event with Teams meeting2
- Cloud Communications API: Create online meeting4
- API comparison and decision guide8
- For work/school accounts, you can use either API depending on your needs (calendar integration vs. direct meeting creation).[^^8]
- For personal accounts, the only online meeting provider available is
skypeForConsumer, and Skype is being retired, so there may be no online meeting links at all for personal accounts soon.9 - The Teams app itself can create meetings for personal accounts, but this is not exposed via public APIs.7
Using the Calendar API2
POST https://graph.microsoft.com/v1.0/me/events
Content-Type: application/json
Authorization: Bearer {token}
{
"subject": "API Created Teams Meeting",
"start": {
"dateTime": "2025-08-13T14:00:00",
"timeZone": "Pacific Standard Time"
},
"end": {
"dateTime": "2025-08-13T15:00:00",
"timeZone": "Pacific Standard Time"
},
"isOnlineMeeting": true,
"onlineMeetingProvider": "teamsForBusiness",
"attendees": [
{
"emailAddress": {
"address": "[email protected]",
"name": "User Name"
},
"type": "required"
}
]
}POST https://graph.microsoft.com/v1.0/me/onlineMeetings
Content-Type: application/json
Authorization: Bearer {token}
{
"startDateTime": "2025-08-13T14:00:00Z",
"endDateTime": "2025-08-13T15:00:00Z",
"subject": "API Created Teams Meeting"
}- Microsoft Graph: Online Meeting Resource4
- Microsoft Graph: Event Resource2
- Microsoft Graph: Permissions10
- Work/school accounts: Full API support for creating Teams meetings.6
- Personal accounts: No API support for Teams meetings; only Skype (being retired) is available.359
- No public API workaround for personal accounts.7
- Always check the latest Microsoft documentation for updates.8
Footnotes
-
Microsoft Graph documentation overview: https://learn.microsoft.com/en-us/graph/overview ↩
-
Calendar API for Teams meetings: https://learn.microsoft.com/en-us/graph/api/user-post-events#example-4-create-and-enable-an-event-as-an-online-meeting ↩ ↩2 ↩3 ↩4 ↩5
-
Microsoft Graph API limitations for personal accounts: https://learn.microsoft.com/en-us/graph/api/resources/event?tabs=http#online-meeting-properties ↩ ↩2 ↩3 ↩4
-
Cloud Communications API for Teams meetings: https://learn.microsoft.com/en-us/graph/api/application-post-onlinemeetings ↩ ↩2 ↩3 ↩4 ↩5
-
Cloud Communications API account requirements: https://learn.microsoft.com/en-us/graph/api/resources/onlinemeeting?tabs=http#permissions ↩ ↩2 ↩3 ↩4
-
Microsoft Graph: Online meeting API support for work/school accounts: https://learn.microsoft.com/en-us/graph/choose-online-meeting-api ↩ ↩2 ↩3
-
Microsoft Teams API limitations for personal accounts (Microsoft Q&A, official responses): https://learn.microsoft.com/en-us/answers/questions/1189822/how-to-create-microsoft-teams-meeting-using-graph ↩ ↩2 ↩3
-
API comparison and decision guide: https://learn.microsoft.com/en-us/graph/choose-online-meeting-api ↩ ↩2
-
Skype for Consumer deprecation: https://learn.microsoft.com/en-us/skypeforbusiness/deprecation ↩ ↩2
-
Microsoft Graph permissions reference: https://learn.microsoft.com/en-us/graph/permissions-reference ↩