An API that connects multiple Microsoft services, enabling data access and automation across platforms
To access a meeting programmatically with Microsoft Graph or Teams meeting APIs, a stable meeting identifier is required. How to obtain it depends on where the meeting originates and what access level is available.
1. Using Microsoft Graph calendar APIs (Exchange/Outlook meetings)
For standard Outlook/Exchange meetings, the Graph calendar view exposes a meeting ID via the iCal UID:
- Use Microsoft Graph PowerShell
Get-MgUserCalendarViewto find the meeting by time and user:- Filter by
StartDateTimeandEndDateTimeand the participant’s user ID. - In the response, the
ICalUIdproperty is the meeting ID.
- Filter by
From context:
For each meeting that's listed in the output, the ICalUId parameter value is the meeting ID.
This ICalUId can be stored and reused in Power Automate to look up the same meeting again via Graph.
If admin access is available to Exchange Online, Get-CalendarViewDiagnostics also exposes a meeting identifier:
For each meeting that's listed in the output, the value of the CleanGlobalObjectId parameter is the meeting ID.
Either ICalUId (Graph) or CleanGlobalObjectId (Exchange) can be used as a stable key in automation.
2. Getting the meeting ID from Outlook clients (if needed once, then store it)
If the meeting is already on a user’s calendar and the ID is needed only once to seed an automated process, it can be extracted from the client and then stored for later programmatic use.
Non-admin methods include:
- Classic Outlook for Windows:
- Open the meeting in Outlook.
-
File→Save As→ save as.ics. - Open the
.icsin a text editor and search forUID:. The value afterUID:is the meeting ID.
- New Outlook for Windows:
- Locate a meeting invitation/response/update/cancellation in Inbox or Deleted Items.
- Right-click →
Save As→ save as.eml. - Open the
.emlin a text editor and search forUID=or decode the Base64 block starting withQkVHSU46VkNBTEVOREFSand then search forUID:in the decoded text.
- Outlook on the web (Edge network tool):
- Open the calendar in Edge.
- Open Developer tools →
Networktab. - Filter by
GetCalendarEvent. - Click a day, then the meeting.
- Inspect the
Responsebody; theUIDvalue is the meeting ID.
These UIDs correspond to the same logical meeting and align with the ICalUId used by Graph.
3. Teams meeting details via Teams meeting apps API
If the scenario involves a Teams meeting and a Teams app/bot is present in the meeting, the Teams meeting apps API can be used:
GET /v1/meetings/{meetingId}
The response includes:
-
details.id: The meeting's ID, encoded as a Base64 string. -
details.msGraphResourceId: Used specifically for Microsoft Graph API calls. -
details.joinUrl,details.title,details.type, etc.
This details.id (Base64 meeting ID) and/or details.msGraphResourceId can be used as keys in downstream automation (for example, to correlate with Graph resources or store in Dataverse/SharePoint for Power Automate flows).
In a Teams bot or meeting app, the meeting info can be retrieved in code and then surfaced to Power Automate via a custom connector or storage:
- C# bot:
MeetingInfo result = await TeamsInfo.GetMeetingInfoAsync(turnContext); - JavaScript bot:
const details = await TeamsInfo.getMeetingInfo(context);
4. Online meetings via Microsoft Graph CloudCommunications
For online meetings (Teams) managed via Microsoft Graph CloudCommunications:
- To retrieve an existing online meeting when the meeting ID is already known:
This returns details including join URL, attendees, and description.Get-MgUserOnlineMeeting -UserId $userId -OnlineMeetingId $onlineMeetingId - To create or get an online meeting with a custom external ID (so automation can use that external ID as a stable key):
If a meeting with thatInvoke-MgCreateOrGetCommunicationOnlineMeeting -BodyParameter @{ ExternalId = '<custom-id>'; Subject = '<subject>' }ExternalIdexists, it is returned; otherwise, it is created. The returned object includes the Graph meeting ID and join URL, which can then be used in Power Automate.
5. Using the meeting ID in Power Automate
Once a stable meeting identifier is available (ICalUId, CleanGlobalObjectId, Graph onlineMeetingId, or Teams details.id/msGraphResourceId):
- Store it in a data source (SharePoint list, Dataverse table, etc.).
- In Power Automate, use HTTP actions or Graph connectors to:
- Query the meeting by that ID.
- Expand attendees and then query Microsoft Graph user profiles to retrieve job titles.
The key step is to choose one canonical ID (for example, ICalUId for calendar events or Graph onlineMeetingId/Teams details.id for Teams meetings) and use it consistently across Graph calls and flows.
References: