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 Entra ID
Microsoft Entra ID
A Microsoft Entra identity service that provides identity management and access control capabilities. Replaces Azure Active Directory.
25,073 questions
{count} votes

Accepted answer
  1. Rukmini 3,841 Reputation points Microsoft External Staff Moderator
    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.

    1 person found this answer helpful.

0 additional answers

Sort by: Most helpful

Your answer

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