Get specific instance of a recurring onlineMeeting using Graph API

Steven Bitaxi 41 Reputation points
2025-06-02T15:33:55.5366667+00:00

Recurring online meetings all have the same JoinWebUrl and JoinMeetingId.

According to the documentation, we can query onlineMeetings by joinWebUrl, joinMeetingId or use the unique meetingId to retrieve the specific record

GET /me/onlineMeetings/{meetingId}

GET /users/{userId}/onlineMeetings?$filter=JoinWebUrl%20eq%20'{joinWebUrl}'

GET /users/{userId}/onlineMeetings?$filter=joinMeetingIdSettings/joinMeetingId%20eq%20'{joinMeetingId}'

However, if you don't know the meetingId (which isn't visible to the user), and the meeting is recurring, you can't obtain a specific instance of the meeting because a query will always return the first instance of that meeting.

Querying the Calendar endpoints can be used to get a specific instance

# GET https://graph.microsoft.com/v1.0/me/calendar/events/{recurring Event Id}/instances?startDateTime=2025-05-26&endDateTime=2025-06-30


{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users({userId})/calendar/events({recurring eventId})/instances",
    "value": [
        {
            "@odata.etag": "W/\"9zfGr1v870Go1EeaN62UaQAGNA+uaQ==\"",
            "id": "OUTLOOK EVENT ID",
            "createdDateTime": "2025-05-30T15:21:39.619102Z",
            "lastModifiedDateTime": "2025-05-30T15:23:43.6526776Z",
            "start": {
                "dateTime": "2025-06-02T12:00:00.0000000",
                "timeZone": "UTC"
            }
        }
        ]
}

But none of that information can be used to find the Id for the Online Meeting.

# Sample from an onlineMeetings query
# GET https://graph.microsoft.com/v1.0/me/onlineMeetings?$filter=joinMeetingIdSettings/joinMeetingId eq '1234567'


{
    "@odata.context": "https://graph.microsoft.com/v1.0/$metadata#users({userId)/onlineMeetings",
    "@microsoft.graph.tips": "Use $select to choose only the properties your app needs, as this can lead to performance improvements. For example: GET me/onlineMeetings?$select=attendeeReport,broadcastSettings",
    "value": [
        {
            "id": "ONLINE MEETING ID",
            "creationDateTime": "2025-05-30T15:21:40.6310894Z",
            "startDateTime": "2025-02-03T13:00:00Z"
        }
    ]
}

How do we get a specific instance of a recurring online meeting? That endpoint is the only place where we can make changes to the participant roles, programmatically.

Microsoft Security | Microsoft Entra | Microsoft Entra ID

Answer accepted by question author
Anonymous
2025-06-04T10:38:32.3266667+00:00

Hello Steven Bitaxi,

Microsoft Graph does not support accessing or modifying individual instances of a recurring online meeting via the /onlineMeetings endpoint. All instances share the same joinMeetingId and joinWebUrl, and any query will only return the master (series) meeting, not a specific occurrence.

To manage participants or roles for specific dates, you need to create individual (non-recurring) online meetings using:

POST /users/{userId}/onlineMeetings

This gives each meeting a unique ID, allowing full control over participants and settings for each session.

Hope this clarifies things! Feel free to reach out if any further queries.

If this answers your query, do click Accept Answer and Yes for was this answer helpful, which may help members with similar questions.

User's image

If you have any other questions or are still experiencing issues, feel free to ask in the "comments" section, and I'd be happy to help.

Was this answer helpful?

1 person found this answer helpful.

0 additional answers

Sort by: Oldest

Your answer

Answers can be marked as 'Accepted' by the question author and 'Recommended' by moderators, which helps users know the answer solved the author's problem.